Usando la API de MailHog | Programador Web Valencia

Usando la API de MailHog

1 minuto

MailHog

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.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me invitas a un café? ☕

Puedes hacerlo usando el terminal.

ssh customer@andros.dev -p 5555

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...