Cómo enviar mails con formato usando SwiftMailer

Ya he comentado en otros artículos sobre las diferentes posibilidades para enviar emails usando PHP. De todas las que he probado hasta el momento, SwiftMailer es la que me resulta más cómoda y conveniente, sin embargo, he tenido algunas peleas a la hora de enviar mails con formato (es decir, mails que contengan HTML que necesito que sea entendido como tal y no como mero texto).

La verdad es que es bastante simple lograrlo, sólo hay que conocer el método adecuado 🙂

En general, lo que uno hace cuando quiere enviar un email es algo como esto:

$message = (new Swift_Message())
  ->setSubject('Este es el asunto')
  ->setFrom(['mauro.chojrin@leewayweb.com' => 'Mauro Chojrin'])
  ->setTo(['destinatario@dominio.com' => 'Gran Amigo'])
  ->setBody('Este es el importante mensaje que quiero enviarte!!')
  ;

El problema (si puede llamársele así) es que nos hemos olvidado que el mail acompaña a Internet desde sus inicios, con lo cual, el modo default de envío de correos es texto plano (Aunque muy poca gente lo utilice así hoy en día).

Para enviar correos utilizando HTML se debe agregar una parte al correo que así lo especifique. Es decir, en lugar de usar setBody debemos usar addPart:

$message = (new Swift_Message())
  ->setSubject('Este es el asunto')  ->addPart('<p>Este es el <strong>importante</strong> mensaje que quiero enviarte!!</p>')
  ->setFrom(['mauro.chojrin@leewayweb.com' => 'Mauro Chojrin'])
  ->setTo(['destinatario@dominio.com' => 'Gran Amigo'])
  ->addPart('<p>Este es el <strong>importante</strong> mensaje que quiero enviarte!!</p>')
  ;

Si queremos ser muy puritanos, deberíamos incluir ambas versiones (La HTML y la de texto plano) para no perder a aquellas personas que no tienen habilitado el HTML en su cliente de correo (Aunque sinceramente, es muy raro que así sea y si queremos lograr un buen efecto visual, nada como el HTML, CSS y demás).

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a acceder mercados y clientes más sofisticados y exigentes

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.