PHP'de UTF-8 ve çift noktalı posta ()

PHP ile e-posta göndermek en iyi PHPMailer gibi güçlü sınıflarla uygulanır. Kullanışlı sarmalayıcı işlevleri, UTF-8 içeriğini kullanmayı, görüntüleri yerleştirmeyi ve şifreli ekler yalnızca birkaç satır kodla göndermeyi mümkün kılar. Ek yükten tasarruf etmek ve tavsiyenin aksine mail () PHP işlevini kullanmak istiyorsanız, en geç çift nokta ve UTF-8 kullanırken sorunlarla karşılaşacaksınız.


Fonksiyonu ile çağırdıktan sonra

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

UTF-8 ile kodlanmış bir dosyada zaten gelen kutusunda sorunlara yol açıyor: Outlook 2013 hala zarif ve her şeyi doğru gösteriyor:

mail1

Ancak GMX, eksik başlıkları affetmez ve kötü bir konu, gönderen ve içerik gösterir:

mail2

Doğru başlıkları gönderirseniz (örneğin, base64_encode ile),

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)
);

ve son olarak, GMX de doğru bir gösterimi gösterir:

mail3

Geri