Saltar al contenido principal

Envió de mensajes desde PHP internacionalizado

Francisco Javier Félix Belmonte

04 de junio de 2010

Francisco Javier Félix Belmonte

Envió de mensajes desde PHP internacionalizado

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-8 como 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/plain y text/html para mejorar la compatibilidad.

Referencias

PHPemailsclean code