Enviando e-mails en ambientes de desarrollo

Cuando se ejecuta un proyecto localmente, muchas veces se requiere poder enviar e-mails a los usuarios de prueba, en un ambiente de desarrollo NO es recomendable enviar e-mails reales ya que si no se es cuidadoso podemos llegar a usar datos de producción y enviar e-mails de prueba a usuarios reales causando confusión.

Existen algunas herramientas que permiten configurar la forma de enviar e-mails, mailtrap es una opción SAAS, es gratuito para uso personal, pero si tu equipo crece tiene un costo mensual.

Una opción que me gusta es usar MailHog es solo un ejecutable que no tiene dependencias, está escrito en go, y permite configurar tu proyecto para que envíe como SMTP y en un browser tienes el despliegue de los e-mails que el proyecto envíe.

La configuración de cada proyecto depende de su estructura, este es un ejemplo en laravel 8, en el archivo .env

MAIL_MAILER=smtp
MAIL_HOST=localhost
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=noreply@example.com
MAIL_FROM_NAME="Proyecto"

Una vez que mailhog este ejecutandose, abre http://localhost:8025/ prueba enviando un email desde la aplicación y se mostrará en esa url como se vería desde un cliente de correo.

Los e-mails enviados hacia mailhog son solo almacenados en memoria, así que si reinician mailhog, se perderán.

MailHog screenshot