mail () em PHP com UTF-8 e tremas

Enviar e- mail com PHP é melhor feito com classes poderosas como oPHPMailer .As convenientes funções de invólucro tornam possível usar o conteúdo em UTF-8 com algumas linhasde código, incorporar imagense enviar anexos criptografados. Se vocêdeseja salvar asobrecarga e, contrariamente à recomendação, usar a função PHP mail () , vocêencontrará problemas o mais tardar ao usar tremas e UTF-8.


Depois de chamar a função com

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

em um arquivo codificado em UTF-8 já causa problemas na caixa de entrada: oOutlook 2013 ainda éagradável e exibe tudo corretamente:

mail1

Mas o GMX já não perdoa oscabeçalhos ausentes e mostra um assunto, remetente e conteúdo sem êxito:

mail2

Se você enviar os cabeçalhos corretos (por exemplo, com base64_encode), você obtém

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 finalmente GMX também mostra uma representação correta:

mail3

De volta