Mawlio
Entrar Regístrate
DesarrolloLectura de 6 min

Correo temporal para pruebas QA: cómo automatizar registros

Un correo temporal sirve en QA para probar registros, códigos de verificación y recuperación de contraseña con direcciones reales que reciben correo, sin crear cuentas de correo para cada caso. En Mawlio puedes crear la dirección, disparar el flujo y leer el mensaje desde el mismo script usando los endpoints de la app con la cookie de sesión de tu cuenta. No es una API pública con claves: funciona con tu sesión iniciada, igual que la app web.

¿Por qué usar un correo temporal en pruebas QA?

Un correo temporal te da una dirección nueva y aislada para cada prueba, que llega a una bandeja que puedes leer desde código. Eso evita tres problemas habituales: reutilizar la misma cuenta de prueba hasta que el sistema la rechaza por duplicada, mezclar correos de distintas ejecuciones en una sola bandeja y depender de cuentas personales del equipo.

Además, la prueba ocurre de punta a punta: tu aplicación envía un correo real por internet y verificas que llegó, con el asunto y el contenido correctos. Si solo necesitas revisar el HTML sin envío real, una herramienta que capture el correo en local, como Mailpit, puede ser suficiente. Si quieres el contexto general, en qué es un correo temporal explicamos cómo funciona por dentro.

¿Qué flujos puedes probar?

Puedes probar cualquier flujo de tu aplicación que dependa de que un correo llegue:

  • Registro con confirmación por correo, por código o por enlace.
  • Códigos de un solo uso para iniciar sesión.
  • Restablecimiento de contraseña.
  • Correos transaccionales, como confirmaciones de pedido o avisos de cambio de correo.

Úsalo solo en aplicaciones que son tuyas o que tienes permiso para probar, como tu entorno de staging. Automatizar registros masivos en servicios de terceros suele violar sus términos de uso y no es un uso que apoyemos.

¿Cómo autentican tus scripts las peticiones?

Tus scripts se autentican con la cookie de sesión de tu cuenta de Mawlio, llamada mw_session. Sin ella, los endpoints responden 401 con el mensaje "Inicia sesión".

Para obtenerla, inicia sesión en mawlio.com en tu navegador, abre las herramientas de desarrollo y busca en el almacenamiento de cookies del sitio el valor de mw_session. Como es una cookie protegida, no aparece en document.cookie; tienes que copiarla desde ese panel.

Trátala como una contraseña: quien la tenga puede crear direcciones y gastar los créditos de tu cuenta. Guárdala como secreto de tu sistema de integración continua y nunca la subas al repositorio. En los ejemplos usamos una variable de entorno:

export MAWLIO_COOKIE="mw_session=TU_COOKIE"

Con curl la pasas con -b (o su forma larga --cookie).

¿Cuál es el flujo básico con los endpoints?

El flujo tiene cinco pasos, todos con la misma cookie:

  1. Crea la dirección con POST /api/my/create, indicando etiqueta, tipo de dirección y, si quieres, la parte antes de la arroba y la duración.
  2. Usa la dirección devuelta en el formulario que estás probando.
  3. Consulta GET /api/my/mail hasta que aparezca el mensaje.
  4. Lee el contenido con GET /api/my/mail/body, extrae el código o el enlace y continúa la prueba.
  5. Al terminar, libera la dirección con POST /api/my/delete.

Así se crea una dirección @mawlio.com:

curl -s -X POST https://mawlio.com/api/my/create \
  -b "$MAWLIO_COOKIE" \
  -H "Content-Type: application/json" \
  -d '{
    "label": "Pruebas QA",
    "provider": "mawlio",
    "localPart": "qa.build114",
    "duration": "1d"
  }'

La respuesta es un JSON con la dirección en el campo hme y la fecha de caducidad en expiresAt (milisegundos desde 1970). Si omites localPart, la parte antes de la arroba se genera al azar. Si eliges una, debe tener de 1 a 30 caracteres entre letras, números, punto, guion y guion bajo; algunos nombres están reservados (admin, soporte, info y otros) y responden 403.

¿Cómo lees el código o el enlace del correo?

Lees el correo en dos pasos: primero listas los mensajes y filtras por destinatario, y luego pides el cuerpo del que te interesa. La bandeja solo incluye los correos que llegaron después de crear la dirección, así que no verás restos de pruebas anteriores.

ADDR="qa.build114@mawlio.com"

curl -s -b "$MAWLIO_COOKIE" "https://mawlio.com/api/my/mail?limit=50" \
  | jq -c --arg a "$ADDR" '.messages[] | select(.recipients | index($a)) | {uid, mailbox, subject}'

Con el uid y el mailbox de ese mensaje pides el contenido y extraes, por ejemplo, un código de seis dígitos:

curl -s -b "$MAWLIO_COOKIE" \
  "https://mawlio.com/api/my/mail/body?mailbox=INBOX&uid=123" \
  | jq -r '.text' | grep -oE '[0-9]{6}' | head -n 1

El cuerpo trae text, html, subject, from y la lista de adjuntos. Ajusta la expresión regular al formato de tu código, o busca la URL de confirmación en html.

Para esperar al correo, consulta cada pocos segundos con un tiempo máximo. Los endpoints tienen un límite de peticiones: si envías demasiadas seguidas, responden 429 y te hacen esperar unos segundos, así que un intervalo de 3 a 5 segundos es razonable.

¿Cómo se extiende una dirección y qué duración elegir?

Una dirección se extiende con POST /api/my/extend, enviando la dirección y la nueva duración. La nueva caducidad se cuenta desde el momento en que extiendes, no se suma al tiempo que quedaba.

curl -s -X POST https://mawlio.com/api/my/extend \
  -b "$MAWLIO_COOKIE" \
  -H "Content-Type: application/json" \
  -d '{"hme": "qa.build114@mawlio.com", "duration": "1d"}'

La respuesta devuelve el nuevo expiresAt. Estas son las duraciones disponibles, válidas tanto en extend como en el campo duration de create:

Valor de durationDuraciónCosto en créditosUso típico en QA
1h1 hora1Una prueba manual o un caso aislado
1d1 día1Suites que corren cada noche
1w1 semana3Ciclos de regresión
1m1 mes8Entornos de staging de larga duración
1y1 año50Cuentas de prueba fijas que no requieren recuperación

Al crear, si omites duration o envías 1h, Mawlio usa tu dirección gratis de 1 hora si la tienes disponible. Cada cuenta tiene a la vez 2 direcciones gratis de 1 hora (una @mawlio.com y otra de un segundo tipo de dirección); fuera de ese cupo, una dirección extra cuesta 1 crédito y dura 1 día. Al registrarte recibes 5 créditos, y la recarga con tarjeta llegará pronto. Si no tienes saldo suficiente, la respuesta es 402.

¿Cómo mantener las pruebas aisladas y rastreables?

Cada cuenta solo ve sus propias direcciones, y cada dirección solo muestra los correos que llegaron después de que la obtuviste. Dentro de tu cuenta, GET /api/my/mail devuelve los mensajes de todas tus direcciones activas, por eso conviene filtrar siempre por el campo recipients.

Algunas prácticas que ayudan:

  • Nombres predecibles. Usa el número de build o del caso en localPart, por ejemplo qa.build114, para saber qué ejecución recibió cada correo. Si ese nombre está en uso por otra cuenta, recibirás 409 y tendrás que elegir otro.
  • Etiquetas claras. El campo label aparece en tu bandeja web y te ayuda a revisar a mano lo que hizo el script.
  • Limpieza al final. Libera las direcciones con POST /api/my/delete y {"hme": "..."} cuando termine la suite.

Ten en cuenta que, al liberarse o caducar, una dirección puede asignarse más tarde a otra persona. El nuevo dueño empieza con la bandeja vacía, pero recibiría lo que tu aplicación envíe a esa dirección después. Por eso no dejes en staging cuentas de prueba de larga vida asociadas a direcciones ya liberadas, sobre todo si tu aplicación envía datos sensibles.

Preguntas frecuentes

¿Mawlio tiene una API pública con claves?

No. Los endpoints son los mismos que usa la app web y funcionan con la cookie de sesión de una cuenta iniciada. No hay claves de API: todo depende de tu sesión.

¿Puedo usar Mawlio en mi pipeline de integración continua?

Puedes, guardando la cookie mw_session como secreto del pipeline y pasándola en cada petición. Respeta el límite de peticiones consultando la bandeja cada pocos segundos y ten en cuenta que cada dirección fuera del cupo gratis consume créditos.

¿Puedo recibir códigos por SMS en mis pruebas?

No. Mawlio solo recibe correo electrónico y no ofrece números de teléfono. Para flujos con SMS necesitas otra herramienta; en números temporales para recibir SMS explicamos sus limitaciones.

¿Sirve también para probar a mano?

Sí. Puedes hacer lo mismo desde la app: crear la dirección, copiar el código destacado con un toque y responder desde la dirección temporal. El paso a paso está en cómo recibir códigos de verificación sin dar tu correo personal.

Para empezar a probar tus flujos de correo, crea tu cuenta gratuita en Mawlio.