El envío de correos electrónicos con PHP se implementa mejor con clases poderosas como PHPMailer . Las prácticas funciones de envoltura hacen posible utilizar contenido UTF-8, incrustar imágenes y enviar archivos adjuntos cifrados con solo unas pocas líneas de código. Si desea ahorrarse la sobrecarga y, contrariamente a la recomendación, usa la función PHP mail () , tendrá problemas al usar diéresis y UTF-8 a más tardar.
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 en UTF-8 ya genera problemas en la bandeja de entrada: Outlook 2013 sigue siendo amable y muestra todo correctamente:
Pero GMX no perdona los encabezados que faltan y muestra un mal asunto, remitente y contenido:
Si envía los encabezados correctos (por ejemplo, con base64_encode), obtiene
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: