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:
- 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. - Usa la dirección devuelta en el formulario que estás probando.
- Consulta
GET /api/my/mailhasta que aparezca el mensaje. - Lee el contenido con
GET /api/my/mail/body, extrae el código o el enlace y continúa la prueba. - 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 duration | Duración | Costo en créditos | Uso típico en QA |
|---|---|---|---|
1h | 1 hora | 1 | Una prueba manual o un caso aislado |
1d | 1 día | 1 | Suites que corren cada noche |
1w | 1 semana | 3 | Ciclos de regresión |
1m | 1 mes | 8 | Entornos de staging de larga duración |
1y | 1 año | 50 | Cuentas 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 ejemploqa.build114, para saber qué ejecución recibió cada correo. Si ese nombre está en uso por otra cuenta, recibirás409y tendrás que elegir otro. - Etiquetas claras. El campo
labelaparece 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/deletey{"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.
Qué es un correo temporal y cuándo conviene usarlo
Una dirección que funciona por un tiempo y luego caduca. Para qué sirve, cómo funciona y cuándo es mejor no usarla.
Leer artículoPaso a pasoLectura de 6 minCómo recibir códigos de verificación sin dar tu correo personal
El proceso completo para recibir un código con un correo temporal, qué hacer si no llega y cuándo no conviene hacerlo.
Leer artículoGuíaLectura de 7 minCómo evitar el spam: por qué te llega y cómo frenarlo en Gmail y Outlook
De dónde sacan tu correo los spammers, cuándo sí darte de baja y cómo configurar filtros en Gmail y Outlook.
Leer artículo