mail () en PHP con UTF-8 y diéresis

El envío de correos electrónicos con PHP se realiza mejor con clases potentes como PHPMailer . Las prácticas funciones de envoltura permiten utilizar contenido en UTF-8 con unas pocas líneas de código, incrustar imágenes y enviar archivos adjuntos encriptados. Si desea guardar los gastos generales y, contrariamente a la recomendación, utilizar la función PHP mail () , encontrará problemas a más tardar cuando utilice diéresis y UTF-8.


Después de llamar a la función con

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

en un archivo codificado UTF-8 ya genera problemas en la bandeja de entrada: Outlook 2013 sigue siendo amable y muestra todo correctamente:

mail1

Pero ya GMX no perdona los encabezados faltantes y muestra un asunto, remitente y contenido sin éxito:

mail2

Si envía los encabezados correctos (por ejemplo, con base64_encode), obtendrá

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

y finalmente GMX también muestra una representación correcta:

mail3

Espalda