¿Alguna vez te llegó un correo similar a este?
Es un hecho: los mails que genera y envía tu aplicación son una parte de ella y, como tal, deben ser testeados.
En este artículo te mostraré algunas técnicas que te ayudarán a encarar estas pruebas
Testear emails enviando a un único destinatario
Una técnica simple es hacer que todos los correos lleguen siempre a un mismo destinatario (a vos).
La ventaja de esto es que prácticamente no necesitás nada extra (Nada que no tengas digamos).
El problema es que implementar esto puede implicar ensuciar el código con condicionales aquí y allí.
Si usas un componente para el envío (Como el Mailer de Symfony), las cosas pueden ser más simples.
Basta con especificar el destinatario único en el archivo de configuración de esta forma:
# config/packages/dev/mailer.yaml framework: mailer: envelope: recipients: ['youremail@example.com']
A partir de aquí, todos los correos salientes serán recibidos por un único destinatario independientemente de quién sea el «verdadero».
Testear emails usando un servidor SMTP local
Otra forma de realizar estas pruebas es instalar un servidor SMTP local y configurarlo de modo de no realizar ningún envío, si no encolarlos todos y luego consultar los envíos pendientes.
Realizar esta configuración desde cero puede resultar bastante engorroso.
Afortunadamente existen algunas herramientas que simplifican mucho todo este proceso.
Una que me parece particularmente interesante es MailHog.
Es bastante simple de instalar y cuenta con una interface web para consultar los correos que se han «enviado» a través de ella:
Otra ventaja no menor de usar MailHog es que viene pre-instalado con el paquete Homestead de Laravel (Una excelente herramienta para usar una máquina virtual para tus desarrollos)
Pero, por si no te convencí de usar MailHog aún, acá te dejo algunas alternativas: