UTF-8とウムラウトを使用したPHPのメール()

PHPを使用したメール送信はPHPMailerのような強力なクラスで行うのが最適です 。 便利なラッパー関数により、数行のコードでUTF-8のコンテンツを使用したり、画像を埋め込んだり、暗号化された添付ファイルを送信したりできます。 オーバーヘッドを節約し、推奨事項に反して、PHP関数mail()を使用する場合、ウムラウトとUTF-8を使用すると、遅くとも問題が発生します。


関数を呼び出した後

mail(
   "vieldav@gmx.de",                          // Empfänger
   "ä ö ü ß",                                 // Betreff
   "ä ö ü ß",                                 // Inhalt
   "From: ä ö ü ß <david@vielhuber.de>"       // Header (Absender)
);

UTF-8でエンコードされたファイルでは、受信トレイで既に問題が発生しています。Outlook2013は引き続き優雅で、すべてが正しく表示されます。

メール1

しかし、すでにGMXは欠落しているヘッダーを許さず、失敗した件名、送信者、コンテンツを表示します。

mail2

正しいヘッダーを送信すると(たとえば、base64_encodeで)、次のようになります。

mail(
   "vieldav@gmx.de",                          				  // Empfänger
   "=?UTF-8?B?".base64_encode("ä ö ü ß")."?=",                            // Betreff
   "ä ö ü ß",                                 			 	  // Inhalt
   "Content-type: text/plain; charset=utf-8\r\n"
  ."From: =?UTF-8?B?".base64_encode("ä ö ü ß")."?=<david@vielhuber.de>"   // Header (Absender)
);

最後に、GMXも正しい表現を示しています。

mail3

バック