UTF-8とumlautsを使用したPHPのメール()

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


で関数を呼び出した後

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

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

mail1

しかし、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

バック