Cómo usar una API de correo temporal sin crear pruebas inestables
Revisado por Revisión editorial de Once Email
Guía del artículo
Por qué vale la pena leer este artículo
- Análisis original
- Modelamos el correo como un sistema asíncrono y separamos creación, espera, selección, validación y limpieza para eliminar dependencias compartidas.
- Contexto de tendencias
- Las suites CI paralelas y los proveedores con colas variables hacen que esperas fijas y buzones reutilizados fallen de forma intermitente.
- Valor práctico
- El equipo obtiene un patrón de sondeo con presupuesto, correlación sin secretos y límites de cuota que puede adaptar a su API.
En esta página
El correo es asíncrono. Una aplicación puede solicitar el envío correctamente y el mensaje tardar por colas, DNS, límites o filtros. Una prueba robusta acepta esa variabilidad dentro de un plazo, sin esperar indefinidamente ni consultar la API a máxima velocidad.
Un buzón por ejecución
Crea una dirección única para cada caso o ejecución paralela. Reutilizar un buzón hace que mensajes antiguos satisfagan condiciones nuevas y que dos workers compitan por el mismo correo. Guarda el identificador del recurso, no dependas de reconocer una dirección por posición.
No uses cuentas o destinatarios de producción. El entorno de ensayo debe dirigir únicamente a dominios aprobados para pruebas.
Separa los pasos
Un flujo claro contiene:
- crear buzón con una vigencia suficiente;
- iniciar la acción en la aplicación;
- consultar la lista con intervalo y límite total;
- seleccionar por señales no secretas;
- leer y validar el mensaje correcto;
- eliminar el buzón y los datos asociados incluso si falla la prueba.
Esta separación permite saber si el defecto está antes del proveedor, en entrega o en contenido.
Sondeo con presupuesto
No uses una espera fija de diez segundos: será lenta cuando el mensaje llegue pronto e inestable cuando tarde más. Consulta periódicamente con un plazo máximo y, si la API lo requiere, retroceso gradual con pequeña variación aleatoria.
Respeta 429 y cualquier cabecera de reintento. Establece también un máximo de solicitudes para que un fallo no consuma la cuota del equipo. La recepción ilimitada de mensajes no equivale a solicitudes ilimitadas.
Pseudocódigo conceptual:
fecha_limite = ahora + 90 segundos
intervalo = 2 segundos
mientras ahora < fecha_limite:
mensajes = listar(buzon)
candidato = encontrar_por_asunto_y_marca(mensajes)
si candidato: validar(candidato); terminar
esperar(intervalo)
fallar_con_diagnostico_sin_secretos()
Correlación sin filtrar secretos
Incluye en el evento de prueba un identificador aleatorio que pueda aparecer en el asunto o metadatos no sensibles. No utilices el propio código de verificación como correlación ni lo escribas en registros. Enmascara la dirección y conserva horas UTC, plantilla y estado.
Seleccionar solo «el mensaje más reciente» es frágil. Filtra por destinatario, tipo esperado, ventana de tiempo y una marca controlada por la prueba.
Validaciones por capas
Comprueba primero metadatos: remitente, asunto, fecha y número de adjuntos. Descarga el cuerpo solo cuando sea necesario. Analiza texto y HTML sin ejecutar contenido remoto. Para enlaces y códigos, valida presencia y forma, pero no imprimas el valor.
Los adjuntos deben utilizar archivos inocuos generados para el caso. Comprueba nombre, MIME, tamaño y hash esperado. Elimina inmediatamente copias temporales.
Limpieza garantizada
Coloca eliminación en un bloque final que se ejecute ante éxito, fallo o cancelación. Borra también la cuenta creada en la aplicación. Añade una tarea periódica para detectar recursos huérfanos sin depender de ella como mecanismo normal.
El buzón puede caducar automáticamente, pero la prueba debería limpiarlo para liberar recursos y demostrar aislamiento.
Seguridad de claves y cuotas
Guarda la clave API en el almacén secreto de CI, limita su acceso por proyecto y revócala si aparece en un registro. No la incluyas en URL, capturas o artefactos. Utiliza claves distintas por entorno cuando el proveedor lo permita.
Define presupuestos de creación y de solicitudes. En Once Email, el contrato candidato contabiliza creación o cambio de buzón, mientras recibir y leer mensajes no consume esa cuota mensual; todos los endpoints conservan límites de velocidad. La documentación pública y la compra permanecen ocultas hasta completar el cierre comercial, por lo que no debes asumir disponibilidad sin confirmación.
Diagnóstico de un fallo
Informa identificador de prueba, horas, número de consultas, último estado y fase fallida. No adjuntes cuerpos, códigos ni enlaces. Distingue timeout sin mensajes, mensaje inesperado, contenido incorrecto y error de limpieza: cada uno conduce a una investigación diferente.
La estabilidad aparece cuando cada prueba controla su buzón, espera con límites, selecciona de forma inequívoca y limpia siempre.
La lista de pruebas de correo de extremo a extremo aporta las validaciones visuales, de accesibilidad y caducidad que complementan la API.
Códigos de verificación por correo: cómo copiar, comprobar y usarlos con seguridad
Un proceso para manejar códigos de un solo uso sin compartirlos, confundir mensajes antiguos ni dejar secretos en el portapapeles.
¿No llega el correo de verificación? Lista segura de diagnóstico
Un orden de comprobación para encontrar un mensaje retrasado sin solicitar códigos repetidamente ni exponer información sensible.