mail () i PHP med UTF-8 og umlauts

Afsendelse af e-mails med PHP implementeres bedst med kraftige klasser såsom PHPMailer . Praktiske indpakningsfunktioner gør det muligt at bruge indhold i UTF-8, at integrere billeder og sende krypterede vedhæftede filer med blot nogle få linjer kode. Hvis du vil spare dig selv for omkostningerne og i modsætning til anbefalingen bruge PHP-funktionen mail () , vil du løbe ind i problemer, når du bruger umlauts og UTF-8 senest.


Efter at have ringet til funktionen med

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

i en UTF-8-kodet fil fører allerede til problemer i indbakken: Outlook 2013 er stadig elskværdig og viser alt korrekt:

mail1

Men GMX tilgiver ikke de manglende overskrifter og viser et dårligt emne, afsender og indhold:

mail2

Hvis du sender de korrekte overskrifter (for eksempel 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)
);

og til sidst viser GMX en korrekt repræsentation:

mail3

Tilbage