mel () di PHP dengan UTF-8 dan umlaut

Menghantar e-mel dengan PHP dilaksanakan dengan baik dengan kelas yang hebat seperti PHPMailer . Fungsi pembungkus yang mudah memungkinkan untuk menggunakan kandungan UTF-8, untuk menyematkan gambar dan mengirim lampiran yang dienkripsi hanya dengan beberapa baris kod. Sekiranya anda ingin menjimatkan kos berlebihan dan, bertentangan dengan cadangan, gunakan surat fungsi PHP () , anda akan menghadapi masalah ketika menggunakan umlauts dan UTF-8 selambat-lambatnya.


Setelah memanggil fungsi dengan

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

dalam fail yang dikodkan UTF-8 sudah menimbulkan masalah dalam peti masuk: Outlook 2013 masih ramah dan memaparkan semuanya dengan betul:

mel1

Tetapi GMX tidak memaafkan tajuk yang hilang dan menunjukkan subjek, pengirim dan kandungan yang tidak baik:

mel2

Sekiranya anda menghantar tajuk yang betul (contohnya dengan base64_encode), anda akan mendapat

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 perwakilan yang betul:

mel3

Belakang