mail () у PHP з UTF-8 та озвучуванням

Надсилання електронних листів за допомогою PHP найкраще реалізовувати за допомогою потужних класів, таких як PHPMailer . Зручні функції обгортки дозволяють використовувати вміст в UTF-8, вбудовувати зображення та надсилати зашифровані вкладення лише за допомогою декількох рядків коду. Якщо ви хочете заощадити накладні витрати та використовувати функцію PHP mail () всупереч рекомендаціям, пізніше у вас виникнуть проблеми при використанні umlauts та UTF-8.


Після виклику функції за допомогою

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

у кодованому файлі UTF-8 вже призводить до проблем у вхідних: Outlook 2013 все ще люб’язний і відображає все правильно:

пошта1

Але GMX не прощає відсутніх заголовків і показує погану тему, відправника та вміст:

пошта2

Якщо ви надішлете правильні заголовки (наприклад, з base64_encode), ви отримаєте

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

і нарешті, GMX також показує правильне подання:

пошта3

Назад