Отправку электронной почты с помощью 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 по-прежнему любезен и отображает все правильно:
Но GMX не прощает недостающих заголовков и показывает плохую тему, отправителя и контент.:
Если вы отправите правильные заголовки (например, с 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 также показывает правильное представление: