mail () dalam PHP dengan UTF-8 dan umlauts

Mengirim email dengan PHP paling baik diimplementasikan dengan kelas-kelas yang kuat seperti PHPMailer . Fungsi pembungkus yang nyaman memungkinkan untuk menggunakan konten UTF-8, menyematkan gambar, dan mengirim lampiran terenkripsi hanya dengan beberapa baris kode. Jika Anda ingin menghemat overhead dan menggunakan fungsi PHP mail () yang bertentangan dengan rekomendasi, Anda akan mengalami masalah saat menggunakan umlauts dan UTF-8 paling lambat.


Setelah memanggil fungsi dengan

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

dalam file berenkode UTF-8 sudah menyebabkan masalah di kotak masuk: Outlook 2013 masih ramah dan menampilkan semuanya dengan benar:

mail1

Namun GMX tidak memaafkan header yang hilang dan menampilkan subjek, pengirim, dan konten yang buruk:

mail2

Jika Anda mengirim header yang benar (misalnya dengan base64_encode), Anda mendapatkan

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 menunjukkan representasi yang benar:

mail3

Kembali