Wenn Ihre Anwendung E-Mails versendet — Registrierungsbestätigungen, Passwortzurücksetzungen, Rechnungen, Benachrichtigungen — benötigen Sie automatisierte Tests, die überprüfen, ob diese E-Mails tatsächlich ankommen und den korrekten Inhalt enthalten. Wir haben zu viele Teams erlebt, die E-Mail-Tests überspringen, weil es kompliziert erscheint. Das ist es nicht, und diese Anleitung wird es beweisen.
Das grundlegende Problem beim Testen von E-Mail-Abläufen besteht darin, dass Sie echte, erreichbare Postfächer benötigen, die Sie programmgesteuert lesen können. Die Verwendung persönlicher Gmail-Konten in CI-Pipelines ist fragil, unsicher und nicht skalierbar. Genau hier haben Wegwerf-E-Mail-APIs ihren berechtigten Platz in einem ausgereiften Test-Stack.
Einrichtung Ihrer Testumgebung Holen Sie sich zunächst Ihren API-Schlüssel aus dem EvilMail-Dashboard. Speichern Sie ihn als Umgebungsvariable in Ihrem CI-System — committen Sie API-Schlüssel niemals in die Versionsverwaltung. ``` export EVILMAIL_API_KEY="your_api_key_here" ```
Erstellen einer Test-E-Mail-Adresse Generieren Sie vor jedem Testlauf eine frische Wegwerf-E-Mail: ``` curl -X POST https://evilmail.pro/api/temp-email \ -H 'Content-Type: application/json' \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" \ -d '{"domain": "evilmail.pro", "ttlMinutes": 30}' ```
Die Antwort enthält die E-Mail-Adresse und ein Sitzungstoken. Verwenden Sie die E-Mail-Adresse, um ein Testkonto in Ihrer Anwendung zu registrieren.
Posteingang abfragen Nachdem Sie eine E-Mail-sendende Aktion in Ihrer Anwendung ausgelöst haben (Registrierung, Passwortzurücksetzung usw.), fragen Sie den Posteingangs-Endpunkt ab, bis die Nachricht eintrifft: ``` curl https://evilmail.pro/api/inbox \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" ```
In einem echten Test würden Sie dies in eine Wiederholungsschleife mit Timeout einbetten. Hier ein praktisches Python-Beispiel: ``` import requests import time
API_KEY = os.environ['EVILMAIL_API_KEY'] BASE = 'https://evilmail.pro'
def wait_for_email(subject_contains, timeout=60): deadline = time.time() + timeout while time.time() < deadline: r = requests.get(f'{BASE}/api/inbox', headers={'X-API-Key': API_KEY}) messages = r.json().get('data', []) for msg in messages: if subject_contains in msg['subject']: return msg time.sleep(3) raise TimeoutError('Email not received') ```
Integration in CI/CD-Pipelines Dieses Muster funktioniert problemlos mit jedem CI-System — GitHub Actions, GitLab CI, Jenkins, CircleCI. Das Kernprinzip lautet: Jeder Testlauf erhält eine eindeutige Wegwerf-Adresse, führt seine Assertions aus und die Adresse läuft automatisch ab. Keine Aufräumskripte, keine gemeinsam genutzten Postfächer, die sich füllen, keine instabilen Tests durch übrig gebliebene E-Mails aus vorherigen Durchläufen.
Ein GitHub-Actions-Workflow-Schritt könnte so aussehen: ``` - name: Run email integration tests env: EVILMAIL_API_KEY: ${'{ secrets.EVILMAIL_API_KEY }'} run: pytest tests/email/ -v --timeout=120 ```
Was Sie prüfen sollten Prüfen Sie nicht nur, ob eine E-Mail angekommen ist. Verifizieren Sie die Betreffzeile, die Absenderadresse, das Vorhandensein kritischer Links (Verifizierungs-URLs, Reset-Tokens) und ob diese Links tatsächlich zu gültigen Seiten führen. Ein vollständiger E-Mail-Test validiert die gesamte Kette von der Auslösung über die Zustellung bis zur Korrektheit des Inhalts.
Skalierung auf Hunderte von Tests Für große Testsuiten, die viele gleichzeitige E-Mail-Adressen benötigen, verwenden Sie den Kontoerstellungs-Endpunkt, um Adressen unter Ihrer eigenen Domain zu erstellen. Dies gibt Ihnen volle Kontrolle über den Namensraum und vermeidet jegliche Ratenbegrenzung auf dem Temp-Email-Endpunkt: ``` curl -X POST https://evilmail.pro/api/accounts \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"email": "[email protected]", "password": "testpass"}' ```
Nach Abschluss der Testsuite löschen Sie die Testkonten gesammelt: ``` curl -X DELETE https://evilmail.pro/api/accounts \ -H 'X-API-Key: '"$EVILMAIL_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"emails": ["[email protected]"]}' ```
Das Fazit E-Mail-Tests sollten nicht der fragile Nachgedanke in Ihrer Testsuite sein. Mit einer geeigneten Wegwerf-E-Mail-API werden sie genauso deterministisch und zuverlässig wie jeder andere Integrationstest. Deployen Sie mit der Gewissheit, dass Ihre E-Mails tatsächlich funktionieren.
