Volver a la base de conocimiento

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.

Actualizado febrero 12, 2026