mail () trong PHP với UTF-8 và âm sắc

Gửi email bằng PHP được triển khai tốt nhất với các lớp mạnh mẽ như PHPMailer . Các chức năng trình bao bọc thuận tiện giúp bạn có thể sử dụng nội dung UTF-8, để nhúng hình ảnh và gửi các tệp đính kèm được mã hóa chỉ với một vài dòng mã. Nếu bạn muốn tiết kiệm chi phí và sử dụng hàm thư () PHP trái với khuyến nghị, bạn sẽ gặp sự cố khi sử dụng âm sắc và UTF-8 mới nhất.


Sau khi gọi hàm với

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

trong một tệp được mã hóa UTF-8 đã dẫn đến sự cố trong hộp thư đến: Outlook 2013 vẫn hoạt động tốt và hiển thị mọi thứ một cách chính xác:

mail1

Nhưng GMX không tha thứ cho các tiêu đề bị thiếu và hiển thị chủ đề, người gửi và nội dung xấu:

mail2

Nếu bạn gửi các tiêu đề chính xác (ví dụ: với base64_encode), bạn sẽ nhận được

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

và cuối cùng GMX cho thấy một đại diện chính xác:

mail3

Trở lại