Wysyłanie e-maili za pomocą PHP najlepiej jest zaimplementować za pomocą zaawansowanych klas, takich jak PHPMailer . Wygodne funkcje opakowujące umożliwiają korzystanie z treści UTF-8, osadzanie obrazów i wysyłanie zaszyfrowanych załączników za pomocą zaledwie kilku wierszy kodu. Jeśli chcesz oszczędzić narzut i używać funkcji mail () w PHP wbrew zaleceniom, najpóźniej przy używaniu umlautów i UTF-8 napotkasz problemy.
Po wywołaniu funkcji z
mail(
"vieldav@gmx.de", // Empfänger
"ä ö ü ß", // Betreff
"ä ö ü ß", // Inhalt
"From: ä ö ü ß <david@vielhuber.de>" // Header (Absender)
);
w pliku zakodowanym w UTF-8 już prowadzi do problemów w skrzynce odbiorczej: Outlook 2013 jest nadal łaskawy i wyświetla wszystko poprawnie:
Ale GMX nie wybacza brakujących nagłówków i pokazuje zły temat, nadawcę i treść:
Jeśli wyślesz poprawne nagłówki (na przykład z base64_encode), otrzymasz
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)
);
i wreszcie GMX pokazuje poprawną reprezentację: