Cómo configurar y utilizar Swift Mailer en Drupal 8 y no morir en el intento

June 18, 2021

enter image description here

Una de las “desventajas” de utilizar Drupal 8 para un programador experimentado en D7 o acostumbrado a esta tecnología es que muchos de los módulos contribuidos favoritos en D7 están en proceso de migración a D8, algunos apenas se encuentran en sus versiones alpha o beta y otros ni siquiera han empezado a ser migrados. Lo que nos deja con sólo unas pocas opciones de módulos estables y la alternativa de lanzarte a la aventura con primeras versiones de otro grupo más de módulos como es el caso de Swift Mailer.

Swift Mailer amplía la funcionalidad básica de envío de correo electrónico proporcionada por Drupal delegando toda la gestión de correo electrónico a la librería Swift Mailer. Esto permite a tu sitio aprovechar numerosas funciones que ofrece la librería como por ejemplo:

  • Enviar correos electrónicos directamente a través de un servidor SMTP de tu elección, un MTA instalado localmente como sendmail o la funcionalidad de correo proporcionada por PHP.

  • Enviar correos electrónicos en formato HTML (MIME).

  • Agregar archivos adjuntos a correos electrónicos.

  • Agregar imágenes al contenido de los correos electrónicos. El módulo también te permite personalizar la imagen de un correo electrónico para que refleje la apariencia general de tu sitio; uno de los objetivos que busca este artículo.

Para empezar a utilizar Swift Mailer primero debes chequear que tengas el módulo mailsystem instalado y habilitado, si no lo tienes debes instalarlo y habilitarlo:

machine:docroot user$ drush en mailsystem –y

Swift Mailer depende del módulo mailsystem. Este módulo es responsable de hacer que el módulo de Swift Mailer esté disponible para Drupal.

Una vez instalado y habilitado este módulo debes instalar y habilitar el módulo swiftmailer:

enter image description here

Adicionalmente, necesitarás descargar e instalar la librería Swift Mailer para dejar funcionando este módulo. La forma preferida de instalar esta librería es vía Composer en el directorio raíz del proyecto (p.e. docroot):

enter image description here

En esta ocasión, también instalé y configuré MailCatcher; pero esto no es un paso estrictamente necesario. MailCatcher ejecuta un servidor SMTP super simple que captura cualquier mensaje enviado para mostrarlo en una interfaz. Su página está bastante completa y detalla los pasos a seguir para su instalación y configuración. El siguiente paso sería configurar el Mail System (/admin/config/system/mailsystem) a través del UI admin:

enter image description here

Para luego finalmente configurar el Swift Mailer (/admin/config/swiftmailer/transport) también a través del UI admin, en este caso, con la configuración correspondiente al MailCatcher:

enter image description here

Para crear un tema personalizado y poder agregar en él una plantilla de correo electrónico con tu propio diseño debes crear el directorio del tema en la siguiente ruta: /docroot/themes/custom/

Luego debes crear dentro del directorio del tema un archivo con el siguiente formato de nombre:

.info.yml Y colocar en él, el contenido requerido. Finalmente, debes borrar caché (drush cr) y si todo fue configurado correctamente, debes ir al panel de administrador a la opción de Apariencia (/admin/appearance) y allí debe de aparecer el tema creado como no instalado. El último paso sería instalarlo para que esté disponible como tema en tu sistema. Para crear la plantilla personalizada de correo electrónico se debe agregar dentro del directorio del tema una carpeta que lleve por nombre templates y en su interior un archivo que debe llamarse swiftmailer.html.twig. Incluso conviene hacer una copia de la plantilla del módulo contribuido con el mismo nombre ubicada en docroot/modules/contrib/swiftmailer/templates y empezar tu personalización a partir de allí. El estilo css debe ubicarse en el mismo archivo y si el diseño lleva imágenes es una buena práctica colocarlas en un directorio dentro del tema que lleve por nombre images. La manera de referenciar en tu código a la imagen sería algo como esto: ![enter image description here](https://cms.rootstack.comhttps://cms.rootstack.com/sites/default/files/swiftmaile_2.png) Y listo, ya tendrías una plantilla HTML para tu sitio web utilizando Swift Mailer en Drupal 8. Hacer uso de versiones alpha para D8 de un módulo que quizás ya estás acostumbrado a utilizar puede causar, a veces, cierta insatisfacción o inseguridad ya que cualquier cosa como incompatibilidad entre tu versión actual de D8 y la versión inicial del módulo puede hacer que nada funcione; pero la ventaja cuando te arriesgas es que todo puede resultar bien y hacer publicaciones como ésta en donde “contribuir” no sólo se queda en el software sino que trasciende a otro nivel ayudando a otros desarrolladores de la comunidad.

Yes, I liked thiscontent.