Het versturen van e-mails met PHP kan het beste worden geïmplementeerd met krachtige klassen zoals PHPMailer . Handige wrapper-functies maken het mogelijk om inhoud in UTF-8 te gebruiken, afbeeldingen in te sluiten en gecodeerde bijlagen te verzenden met slechts een paar regels code. Als je jezelf de overhead wilt besparen en, in tegenstelling tot de aanbeveling, de PHP-functie mail () wilt gebruiken , zul je problemen tegenkomen bij het gebruik van umlauts en uiterlijk UTF-8.
Na het aanroepen van de functie met
mail(
"vieldav@gmx.de", // Empfänger
"ä ö ü ß", // Betreff
"ä ö ü ß", // Inhalt
"From: ä ö ü ß <david@vielhuber.de>" // Header (Absender)
);
in een UTF-8 gecodeerd bestand leidt al tot problemen in de inbox: Outlook 2013 is nog steeds gracieus en geeft alles correct weer:
Maar GMX vergeeft de ontbrekende headers niet en toont een slecht onderwerp, afzender en inhoud:
Als je de juiste headers verstuurt (bijvoorbeeld met base64_encode), krijg je
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)
);
en tenslotte toont GMX ook een correcte weergave: