Cómo los desarrolladores usan el correo desechable para pruebas
Probar la funcionalidad de correo electrónico es tedioso. Crear la cuenta de Gmail #47, verificarla, revisar la bandeja, capturar pantalla del correo, repetir para cada prueba.
El correo desechable cambia esto: generar dirección, probar flujo, cerrar pestaña. Cero limpieza, cero trabajo manual.
El problema de las pruebas
Flujo de trabajo tradicional de pruebas de correo:
1. Crear usuario de prueba con [email protected]
2. Activar restablecimiento de contraseña
3. Abrir Gmail en otra pestaña
4. Esperar el correo
5. Encontrarlo entre otros 200 correos de prueba
6. Prueba completada
7. La bandeja ahora tiene 247 correos de prueba
Problemas:
- Contamina tu bandeja
- No se puede paralelizar (la misma dirección se reutiliza)
- Gmail puede marcar tus correos de prueba como spam
- Hay que limpiar manualmente cientos de cuentas de prueba
Solución: API de correo desechable
Con tempy.email:
// Crear buzón
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
method: 'POST'
}).then(r => r.json());
// Usarlo en tu prueba
await yourApp.signup({ email: mailbox.email });
// Obtener correos
const emails = await fetch(
`https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());
console.log(emails[0].subject); // "Verifica tu correo"
// La dirección expira automáticamente - cero limpieza
Casos de uso reales
1. Pruebas de integración
def test_welcome_email():
# Generar buzón temporal
r = requests.post('https://tempy.email/api/v1/mailbox')
email = r.json()['email']
# Crear usuario
create_user(email=email)
# Verificar bandeja
time.sleep(2)
emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')
assert "Welcome" in emails.json()[0]['subject']
2. Pruebas E2E (Cypress/Playwright)
// Generar correo único por ejecución de prueba
const mailbox = await cy.request('POST', 'https://tempy.email/api/v1/mailbox');
cy.visit('/signup');
cy.get('[name="email"]').type(mailbox.body.email);
cy.get('button').click();
// Esperar correo de verificación
cy.wait(2000);
cy.request(`https://tempy.email/api/v1/mailbox/${mailbox.body.email}/emails`)
.then((res) => {
const link = extractLink(res.body[0].bodyHtml);
cy.visit(link);
});
3. Pruebas de carga
Probar 1000 registros en paralelo — cada uno con dirección única:
await Promise.all(
Array(1000).fill().map(async () => {
const m = await createMailbox();
await testSignup(m.email);
// Expira automáticamente, no necesita limpieza
})
);
4. Verificación de plantillas de correo
// Enviar correo de prueba
await sendEmail({
to: tempAddress,
template: 'order_confirmation',
data: { order: '12345', total: '$99' }
});
// Verificar que la plantilla se renderizó correctamente
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));
Referencia de API
Crear buzón:
POST https://tempy.email/api/v1/mailbox
→ { "email": "[email protected]", "expires_at": "..." }
Obtener correos:
GET https://tempy.email/api/v1/mailbox/{address}/emails
→ [{ "subject": "...", "bodyHtml": "...", ... }]
Extender TTL:
POST https://tempy.email/api/v1/mailbox/{address}/extend
→ Añade 5 minutos
Mejores prácticas
Usar direcciones únicas por prueba:
// Cada prueba obtiene bandeja limpia
test('signup', async () => {
const email = await createUniqueEmail();
await testWith(email);
});
Consultar correos periódicamente:
async function pollForEmail(address, timeout = 10000) {
const start = Date.now();
while (Date.now() - start < timeout) {
const emails = await getEmails(address);
if (emails.length > 0) return emails[0];
await sleep(500);
}
throw new Error('Correo no recibido');
}
No usar direcciones compartidas:
// Malo - correos de diferentes pruebas se mezclan
const SHARED_EMAIL = '[email protected]';
Ahorro de tiempo
Antes: 10 min/prueba x 100 pruebas/semana = 1000 min/semana = 16.7 horas/semana
Después: 30 seg/prueba x 100 pruebas = 50 min/semana
Ahorro: más de 15 horas por desarrollador por semana.
Integración CI/CD
# .github/workflows/test.yml
name: Email Tests
on: [push]
jobs:
test:
runs-on: ubuntu-latest
steps:
- run: npm test -- email.test.js
env:
TEMP_EMAIL_API: https://tempy.email/api/v1
Sin claves API. Sin límites de velocidad. Simplemente funciona.
Deja de contaminar tu bandeja. Empieza a probar de manera más inteligente con tempy.email.