MailHog es un servidor de correo electrónico de desarrollo, escrito en Go, que permite enviar mensajes y capturarlos localmente para su visualización/depuración. Es muy útil para trabajar porque nos ofrece la posibilidad de enviar emails sin necesidad de conexión a internet o la necesidad de configurar un proveedor externo de SMTP. Además es una solución rápida y barata para testear que los correos se envían correctamente.
Para acceder al webmail de MailHog tan solo hay que entrar en http://localhost:8025
. Es una interfaz visual muy útil para algunas comprobaciones manuales. Sin embargo cuando necesitamos automatizar las pruebas debemos recurrir a una API. A continuación veremos cómo interactuar con MailHog desde diferentes lenguajes de programación.
API
Obtener todos los correos
Verbo: GET
Endpoint: http://localhost:8025/api/v2/messages
CURL
curl --location "http://localhost:8025/api/v2/messages"
Cypress.
cy.request("GET", "localhost:8025/api/v2/messages").then(
(response) => {
expect(response.body).to.have.property("count", 1)
}
)
Python
import requests
response = requests.get("http://localhost:8025/api/v2/messages")
content = response.json()
for message in content["items"]:
print(message)
Obtener último correo
Verbo: GET
Endpoint: http://localhost:8025/api/v2/messages?limit=1
CURL
curl --location "http://localhost:8025/api/v2/messages?limit=1"
Cypress.
cy.request("GET", "localhost:8025/api/v2/messages?limit=1").then(
(response) => {
expect(response.body).to.have.property("count", 1)
}
)
Python
import requests
response = requests.get("http://localhost:8025/api/v2/messages?limit=1")
content = response.json()
for message in content["items"]:
print(message)
En tiempo real
En caso de necesitar capturar los nuevos mensajes en tiempo real, podemos conectarnos por WebSockets.
Conexión
Endpoint: ws://localhost:8025/api/v2/websocket
Terminal
websocat ws://localhost:8025/api/v2/websocket
JavaScript
const miWebSocket = new WebSocket("ws://localhost:8025/api/v2/websocket");
function message (evento) {
// Se recibe un mensaje
console.log("Nuevo mensaje");
// Mostrar mensaje en HTML
console.log(evento.data);
}
miWebSocket.addEventListener("message", message);
Conclusiones
MailHog es una herramienta muy útil para testear el envío de correos electrónicos en entornos de desarrollo. Además, su API o servidor de WebSockets nos permite obtener los correos enviados y su contenido para poder realizar pruebas automatizadas. Ya depende de ti obtener lo mejor de esta herramienta.
{{ comments.length }} comentarios