mail () dalam PHP dengan UTF-8 dan umlauts

Email dengan PHP paling baik dilakukan dengan kelas kuat seperti PHPMailer . Fungsi pembungkus yang nyaman memungkinkan untuk menggunakan konten di UTF-8 dengan beberapa baris kode, untuk menyematkan gambar dan mengirim lampiran yang dienkripsi. Jika Anda ingin menyimpan overhead dan, berlawanan dengan anjuran, gunakan fungsi PHP mail () , Anda akan mengalami masalah paling lambat saat menggunakan umlauts dan UTF-8.


Setelah memanggil fungsi dengan

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

dalam file disandikan UTF-8 sudah mengarah ke masalah di inbox: Outlook 2013 masih ramah dan menampilkan semuanya dengan benar:

mail1

Namun, GMX tidak memaafkan header yang hilang dan menunjukkan subjek, pengirim, dan konten yang gagal:

mail2

Jika Anda mengirim tajuk yang benar (misalnya dengan base64_encode), Anda dapat

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

dan akhirnya GMX juga menunjukkan representasi yang benar:

mail3

Kembali