[{"data":1,"prerenderedAt":191},["ShallowReactive",2],{"\u002Fes\u002Fblog\u002Ftemporary-email-api-testing-guide":3,"\u002Fes\u002Fblog\u002Ftemporary-email-api-testing-guide-surround":180},{"id":4,"title":5,"authors":6,"badge":12,"body":14,"contentQuality":162,"date":166,"description":167,"extension":168,"image":169,"indexable":171,"locale":172,"meta":173,"navigation":171,"path":174,"reviewedBy":175,"seo":176,"stem":177,"updated":178,"__hash__":179},"postsEs\u002Fes\u002Fblog\u002F19.temporary-email-api-testing-guide.md","Cómo usar una API de correo temporal sin crear pruebas inestables",[7],{"name":8,"to":9,"avatar":10},"Equipo de ingeniería de Once Email","\u002Fes\u002Fabout",{"src":11},"\u002Fimages\u002Fauthors\u002Fdefault-cartoon-author-v2.webp",{"label":13},"Automatización de pruebas",{"type":15,"value":16,"toc":151},"minimark",[17,21,26,29,32,36,39,61,64,68,71,79,82,92,96,99,102,106,109,112,116,119,122,126,129,132,136,139,142],[18,19,20],"p",{},"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.",[22,23,25],"h2",{"id":24},"un-buzón-por-ejecución","Un buzón por ejecución",[18,27,28],{},"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.",[18,30,31],{},"No uses cuentas o destinatarios de producción. El entorno de ensayo debe dirigir únicamente a dominios aprobados para pruebas.",[22,33,35],{"id":34},"separa-los-pasos","Separa los pasos",[18,37,38],{},"Un flujo claro contiene:",[40,41,42,46,49,52,55,58],"ol",{},[43,44,45],"li",{},"crear buzón con una vigencia suficiente;",[43,47,48],{},"iniciar la acción en la aplicación;",[43,50,51],{},"consultar la lista con intervalo y límite total;",[43,53,54],{},"seleccionar por señales no secretas;",[43,56,57],{},"leer y validar el mensaje correcto;",[43,59,60],{},"eliminar el buzón y los datos asociados incluso si falla la prueba.",[18,62,63],{},"Esta separación permite saber si el defecto está antes del proveedor, en entrega o en contenido.",[22,65,67],{"id":66},"sondeo-con-presupuesto","Sondeo con presupuesto",[18,69,70],{},"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.",[18,72,73,74,78],{},"Respeta ",[75,76,77],"code",{},"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.",[18,80,81],{},"Pseudocódigo conceptual:",[83,84,90],"pre",{"className":85,"code":87,"language":88,"meta":89},[86],"language-text","fecha_limite = ahora + 90 segundos\nintervalo = 2 segundos\nmientras ahora \u003C fecha_limite:\n  mensajes = listar(buzon)\n  candidato = encontrar_por_asunto_y_marca(mensajes)\n  si candidato: validar(candidato); terminar\n  esperar(intervalo)\nfallar_con_diagnostico_sin_secretos()\n","text","",[75,91,87],{"__ignoreMap":89},[22,93,95],{"id":94},"correlación-sin-filtrar-secretos","Correlación sin filtrar secretos",[18,97,98],{},"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.",[18,100,101],{},"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.",[22,103,105],{"id":104},"validaciones-por-capas","Validaciones por capas",[18,107,108],{},"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.",[18,110,111],{},"Los adjuntos deben utilizar archivos inocuos generados para el caso. Comprueba nombre, MIME, tamaño y hash esperado. Elimina inmediatamente copias temporales.",[22,113,115],{"id":114},"limpieza-garantizada","Limpieza garantizada",[18,117,118],{},"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.",[18,120,121],{},"El buzón puede caducar automáticamente, pero la prueba debería limpiarlo para liberar recursos y demostrar aislamiento.",[22,123,125],{"id":124},"seguridad-de-claves-y-cuotas","Seguridad de claves y cuotas",[18,127,128],{},"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.",[18,130,131],{},"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.",[22,133,135],{"id":134},"diagnóstico-de-un-fallo","Diagnóstico de un fallo",[18,137,138],{},"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.",[18,140,141],{},"La estabilidad aparece cuando cada prueba controla su buzón, espera con límites, selecciona de forma inequívoca y limpia siempre.",[18,143,144,145,150],{},"La ",[146,147,149],"a",{"href":148},"\u002Fes\u002Fblog\u002Femail-testing-checklist","lista de pruebas de correo de extremo a extremo"," aporta las validaciones visuales, de accesibilidad y caducidad que complementan la API.",{"title":89,"searchDepth":152,"depth":152,"links":153},2,[154,155,156,157,158,159,160,161],{"id":24,"depth":152,"text":25},{"id":34,"depth":152,"text":35},{"id":66,"depth":152,"text":67},{"id":94,"depth":152,"text":95},{"id":104,"depth":152,"text":105},{"id":114,"depth":152,"text":115},{"id":124,"depth":152,"text":125},{"id":134,"depth":152,"text":135},{"originalAnalysis":163,"trendContext":164,"practicalValue":165},"Modelamos el correo como un sistema asíncrono y separamos creación, espera, selección, validación y limpieza para eliminar dependencias compartidas.","Las suites CI paralelas y los proveedores con colas variables hacen que esperas fijas y buzones reutilizados fallen de forma intermitente.","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.","2026-08-07","Diseño de pruebas con buzones aislados, consultas limitadas, tiempos máximos, correlación segura y limpieza determinista.","md",{"src":170},"\u002Fimages\u002Fblog\u002Ftemporary-email-api-testing-guide-cover.webp",true,"es",{},"\u002Fes\u002Fblog\u002Ftemporary-email-api-testing-guide","Revisión editorial de Once Email",{"title":5,"description":167},"es\u002Fblog\u002F19.temporary-email-api-testing-guide","2026-08-08","IvJvDE_mKGsKuPPfQih9rI6YN_NXmndZmaCBjc-s0sU",[181,186],{"title":182,"path":183,"stem":184,"description":185,"children":-1},"Códigos de verificación por correo: cómo copiar, comprobar y usarlos con seguridad","\u002Fes\u002Fblog\u002Femail-verification-code-safety","es\u002Fblog\u002F18.email-verification-code-safety","Un proceso para manejar códigos de un solo uso sin compartirlos, confundir mensajes antiguos ni dejar secretos en el portapapeles.",{"title":187,"path":188,"stem":189,"description":190,"children":-1},"¿No llega el correo de verificación? Lista segura de diagnóstico","\u002Fes\u002Fblog\u002Fanxiety","es\u002Fblog\u002F2.anxiety","Un orden de comprobación para encontrar un mensaje retrasado sin solicitar códigos repetidamente ni exponer información sensible.",1786216794058]