Envió de mensajes desde PHP internacionalizado
04 de junio de 2010
Francisco Javier Félix Belmonte
Cuando creamos una aplicación en PHP que necesite enviar correos electrónicos de forma internacionalizada, nos encontramos con algunos desafíos comunes:
- Codificación de caracteres (UTF-8, ISO-8859-1, etc.).
- Compatibilidad con distintos clientes de correo.
- Idioma del contenido del mensaje según la preferencia del usuario.
Solución propuesta
Una solución eficiente es usar la función mb_send_mail() de PHP, que permite manejar codificaciones multibyte y
establecer correctamente los encabezados.
Ejemplo básico:
$to = 'usuario@ejemplo.com';
$subject = 'Bienvenido a nuestro sitio';
$message = '¡Gracias por registrarte!';
$headers = "From: no-responder@miweb.com\r\n" .
"Content-Type: text/plain; charset=UTF-8\r\n";
mb_language("uni");
mb_internal_encoding("UTF-8");
mb_send_mail($to, $subject, $message, $headers);
Recomendaciones
- Siempre usar
UTF-8como codificación por defecto. - Validar que el servidor tenga habilitado
mbstring. - Probar los mensajes en múltiples clientes de correo (Gmail, Outlook, Thunderbird…).
- Incluir versiones
text/plainytext/htmlpara mejorar la compatibilidad.
Referencias
PHPemailsclean code