get-the-solution

Email Subject mit UTF8 im Header

By
on Regards: DBMS;

Emails sind laut Spezifikation in ASCII codiert weshalb man bei der Darstellung der Zeichen im Email sehr beschränkt ist.

Es gibt zwar die Möglichkeit im Header mit der Eigenschaft Content-Type (Content-Type: text/plain; charset=UTF-8) die Codierung mit anzugeben damit der Email Client weiß wie der Content Body codiert ist. Jedoch trifft das eben nicht auf den Header zu. Wie kann man dann also das Subject im Header mit UTF-8 codieren?

Um im Header die ASCII beschränkung zu umgehen gibt es die "MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text" RFC Erweiterung. Der Emailclient muss diese RFC Erweiterung natürlich auch unterstützen. Diese RFC beschreibt zwei Möglichkeiten das Subject in einer anderen Codierung an zu geben.

  • Quoted Printable (subject starts with "=?utf-8?Q")
  • Base64 (subject starts with "=?utf-8?B")

Wir beschränken uns fürs erste auf die Base64 Variante da sie im Vergleich zur ersten weniger Zeichen benötigt.

Der Aufbau des Headers hat somit wie folgt aus zu sehen:

=?charset?B?text?=

Den Subject Text codieren wir in einen base64 String. Entweder ihr macht das per Code oder schnell online (https://www.base64encode.org/).

Anschließend muss man nur noch das Subject setzen. Kann z.B. so aussehen:

EXEC MSDB.dbo.sp_send_dbmail [...] @subject = '=?UTF-8?B?base64text?='

Links: