Shell-Script

如何在郵件主題行使用表情符號?

  • June 5, 2019

我正在編寫一個 shell 腳本來設置一些伺服器,一旦完成,它將向我們的服務台發送一封電子郵件,讓我們知道伺服器已準備好使用。

我想使用以下主題行: New Space Loop Activated! 🎉

但我一生無法弄清楚如何接受那個表情符號。我可以在電子郵件正文上使用表情符號,但它不適用於主題。

#
# Send an email to let us know that the server is ready to be used.
# Credentials will be sent to Vault instead of being stored on the server
# once the Vault server has been properly configured.
#
# @since 0.0.1
#
mail -s 'New Space Loop Activated!' \
-a 'From:Kerb!am Man<kerblam@domain.tld>' help@domain.tld << END_MAIL
Delivery for The Humans,

Your new space loop ($HOSTNAME) has been configured $(printf '\xf0\x9f\x8e\x89') and credentials are
available at /home/gatekeeper/. Please remove them from the server once they
have been placed in a secure location.

Delivery fulfilled,
Kerb!am Man $(printf '\xf0\x9f\xa4\x96\n')

And remember: if you want it, Kerblam it!
END_MAIL

我嘗試了一些想法:

  • 嘗試使用encoded-character,但它似乎不適用於 shell 腳本——或者我太愚蠢了,無法弄清楚
  • 嘗試使用 unicode 和 utf-8
  • 嘗試使用printfecho

但似乎沒有任何效果。甚至支持嗎?我正在使用postfixand mailutils,使用Postmark作為 SMTP 中繼。

UTF-8 中的字元🎉是:

f0 9f 8e 89

因此,您需要在主題行中使用此字元串:

=?utf-8?Q?=F0=9F=8E=89?=

或整個主題:

New Space Loop Activated! =?utf-8?Q?=F0=9F=8E=89?=

序列表示字元集是utf-8Q表示可引用的可列印編碼。您還可以使用 BASE64 編碼來節省幾個字節。

引用自:https://unix.stackexchange.com/questions/523133