mail () i PHP med UTF-8 och paraplyer

Att skicka e-post med PHP implementeras bäst med kraftfulla klasser som PHPMailer . Praktiska omslagsfunktioner gör det möjligt att använda UTF-8-innehåll, att bädda in bilder och skicka krypterade bilagor med bara några få kodrader. Om du vill spara kostnaden och, tvärtemot rekommendationen, använda PHP-funktionen mail () , kommer du att stöta på problem när du använder umlauts och UTF-8 senast.


Efter att ha ringt funktionen med

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

i en UTF-8-kodad fil leder redan till problem i inkorgen: Outlook 2013 är fortfarande nådig och visar allt korrekt:

post1

Men GMX förlåter inte de saknade rubrikerna och visar ett dåligt ämne, avsändare och innehåll:

mail2

Om du skickar rätt rubriker (till exempel med base64_encode) får du det

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

och slutligen visar GMX en korrekt representation:

mail3

Tillbaka