mail () i PHP med UTF-8 och umlauts

E-post med PHP görs bäst med kraftfulla klasser som PHPMailer . Praktiska omslagsfunktioner gör det möjligt att använda innehåll i UTF-8 med några kodrader, att bädda in bilder och skicka bilagor krypterade. Om du vill spara omkostnaderna och, i motsats till rekommendationen, använda PHP-funktionen mail () , kommer du att stöta på problem senast när du använder umlauts och UTF-8.


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:

mail1

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

mail2

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

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 också en korrekt representation:

mail3

Tillbaka