Zurück zur Wissensdatenbank

Wie Entwickler Wegwerf-E-Mail zum Testen nutzen

E-Mail-Funktionalität zu testen ist mühsam. Gmail-Konto #47 erstellen, verifizieren, Posteingang prüfen, E-Mail screenshotten, für jeden Test wiederholen.

Wegwerf-E-Mail ändert das: Adresse generieren, Ablauf testen, Tab schließen. Kein Aufräumen, keine manuelle Arbeit.

Das Testproblem

Traditioneller E-Mail-Test-Workflow:

1. Testbenutzer erstellen mit [email protected]
2. Passwort-Zurücksetzen auslösen
3. Gmail in einem anderen Tab öffnen
4. Auf E-Mail warten
5. Sie unter 200 anderen Test-E-Mails finden
6. Test abgeschlossen
7. Posteingang hat jetzt 247 Test-E-Mails

Probleme:

  • Verschmutzt Ihren Posteingang
  • Kann nicht parallelisiert werden (gleiche Adresse wird wiederverwendet)
  • Gmail könnte Ihre Test-E-Mails als Spam markieren
  • Hunderte Testkonten müssen manuell aufgeräumt werden

Lösung: Wegwerf-E-Mail-API

Mit tempy.email:

// Postfach erstellen
const mailbox = await fetch('https://tempy.email/api/v1/mailbox', {
  method: 'POST'
}).then(r => r.json());

// Im Test verwenden
await yourApp.signup({ email: mailbox.email });

// E-Mails abrufen
const emails = await fetch(
  `https://tempy.email/api/v1/mailbox/${mailbox.email}/emails`
).then(r => r.json());

console.log(emails[0].subject); // "Bestätigen Sie Ihre E-Mail"

// Adresse läuft automatisch ab - kein Aufräumen

Reale Anwendungsfälle

1. Integrationstests

def test_welcome_email():
    # Temporäres Postfach generieren
    r = requests.post('https://tempy.email/api/v1/mailbox')
    email = r.json()['email']

    # Benutzer erstellen
    create_user(email=email)

    # Posteingang prüfen
    time.sleep(2)
    emails = requests.get(f'https://tempy.email/api/v1/mailbox/{email}/emails')

    assert "Welcome" in emails.json()[0]['subject']

2. E2E-Tests (Cypress/Playwright)

// Eindeutige E-Mail pro Testlauf generieren
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();

// Auf Verifizierungs-E-Mail warten
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. Lasttests

1000 Registrierungen parallel testen — jede mit eindeutiger Adresse:

await Promise.all(
  Array(1000).fill().map(async () => {
    const m = await createMailbox();
    await testSignup(m.email);
    // Läuft automatisch ab, kein Aufräumen nötig
  })
);

4. E-Mail-Template-Verifizierung

// Test-E-Mail senden
await sendEmail({
  to: tempAddress,
  template: 'order_confirmation',
  data: { order: '12345', total: '$99' }
});

// Prüfen ob Template korrekt gerendert wurde
const email = await getEmail(tempAddress);
assert(email.bodyHtml.includes('Order #12345'));
assert(email.bodyHtml.includes('$99'));

API-Referenz

Postfach erstellen:

POST https://tempy.email/api/v1/mailbox
→ { "email": "[email protected]", "expires_at": "..." }

E-Mails abrufen:

GET https://tempy.email/api/v1/mailbox/{address}/emails
→ [{ "subject": "...", "bodyHtml": "...", ... }]

TTL verlängern:

POST https://tempy.email/api/v1/mailbox/{address}/extend
→ Fügt 5 Minuten hinzu

Best Practices

Eindeutige Adressen pro Test verwenden:

// Jeder Test bekommt einen frischen Posteingang
test('signup', async () => {
  const email = await createUniqueEmail();
  await testWith(email);
});

E-Mails abfragen:

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('E-Mail nicht empfangen');
}

Keine geteilten Adressen verwenden:

// Schlecht - E-Mails verschiedener Tests vermischen sich
const SHARED_EMAIL = '[email protected]';

Zeitersparnis

Vorher: 10 Min/Test x 100 Tests/Woche = 1000 Min/Woche = 16,7 Stunden/Woche

Nachher: 30 Sek/Test x 100 Tests = 50 Min/Woche

Ersparnis: Über 15 Stunden pro Entwickler pro Woche.

CI/CD-Integration

# .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

Keine API-Schlüssel. Keine Rate-Limits. Funktioniert einfach.

Hören Sie auf, Ihren Posteingang zu verschmutzen. Testen Sie intelligenter mit tempy.email.

Aktualisiert Februar 12, 2026