пошта () в PHP з UTF-8 та umlauts

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


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

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

у закодованому файлі UTF-8 вже призводить до проблем у папці &quot;Вхідні&quot;: 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

Назад