mail () in PHP con UTF-8 e umlaut

L'invio tramite e- mail con PHP è preferibile con classi potenti come PHPMailer . Le pratiche funzioni wrapper consentono di utilizzare il contenuto in UTF-8 con poche righe di codice, per incorporare immagini e inviare allegati crittografati. Se si desidera salvare l'overhead e, contrariamente alla raccomandazione, utilizzare la funzione di posta PHP () , si verificheranno problemi al più tardi quando si utilizzano umlaut e UTF-8.


Dopo aver chiamato la funzione con

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

in un file codificato UTF-8 porta già a problemi nella posta in arrivo: Outlook 2013 è ancora gentile e visualizza tutto correttamente:

mail1

Ma già GMX non perdona le intestazioni mancanti e mostra un soggetto, un mittente e un contenuto senza successo:

mail2

Se invii le intestazioni corrette (ad esempio con base64_encode), ottieni

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

e infine GMX mostra anche una rappresentazione corretta:

mail3

Indietro