DEV Community

Roberto Manchado
Roberto Manchado

Posted on • Updated on

MailCatcher

En ocasiones, debemos realizar pruebas de nuestros métodos o proyectos
en las que de alguna manera deberemos enviar un email.

Ya sea en un entorno de pruebas o de desarrollo, y en anteriores experiencias
el protocolo ha sido, crear un email ficticio y enviartelo a tu bandeja de entrada , ya
sea de email, protonmail, yahoo?,,,, etc.

Muy profesional.

Desde hace bien poco, vengo utilizando una herramienta , Mail Catcher, que
precisamente sirve para esto.
Se trata de un servidor SMTP que intercepta los mensajes de salida que enviemos al puerto
por defecto: http://127.0.0.1:1025 .

La forma de instalarlo, más cómoda es utilizando una imagen de Docker (Dockerfile) utilizando
un fichero .yml y docker-compose instalado. Esto es:

version: "3"
services:
  mailcatcher:
    restart: on-failure:10
    image: dockage/mailcatcher:0.7.1
    ports:
    - "1086:1080"
    - "1030:1025"

El puerto 1086 de nuestro host, se corresponderá con el 1080 del contenedor de Docker
y el 1030, se corresponderá con el 1025 del contenedor.

De forma que para poder enviar un email a esta bandeja de entrada "virtual" , podemos configurar
nuestro fichero .env ( suponiendo que trabajemos con symfony 4.^) de la siguiente manera:

###> symfony/mailer ###
MAILER_DSN=smtp://127.0.0.1:1030
###< symfony/mailer ###

Arrancamos el contenedor :

docker-compose up

Y ya podemos enviar nuestros emails, desde SwiftMailer , el componente Mailer de Symfony , PHP u otra herramienta para el envío de correos electrónicos, que serán interceptados por
MailCatcher y podremos visualizar lo que hemos enviado sin tener que utilizar correos electrónicos reales.

fdo: roberto manchado

Discussion (0)