Om din applikation skickar e-post — registreringsbekraftelser, losenordsaterstaallningar, fakturor, notifikationer — behover du automatiserade tester som verifierar att dessa e-postmeddelanden faktiskt anlaander och innehaller ratt innehall. Vi har sett alltfor manga team som hoppar over e-posttestning for att det kanns komplicerat. Det ar det inte, och den har guiden kommer att bevisa det.
Det grundlaggande problemet med att testa e-postfloden ar att du behover riktiga, natbara inkorgar som du kan lasa programmatiskt. Att anvanda personliga Gmail-konton i CI-pipelines ar brakligt, osakert och skalar inte. Det ar exakt har som API:er for engangse-post gor sig fortjanta av sin plats i en mogen teststack.
Konfigurera din testmiljo
Forst, hamta din API-nyckel fran EvilMail-panelen. Lagra den som en miljovariabel i ditt CI-system — committa aldrig API-nycklar till versionshantering.
export EVILMAIL_API_KEY="your_api_key_here"Skapa en test-e-postadress
Fore varje testkorrning, generera en ny engangse-post:
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}'Svaret inkluderar e-postadressen och en sessionstoken. Anvand e-postadressen for att registrera ett testkonto i din applikation.
Polla inkorgen
Efter att ha utlost en e-postskickande aktion i din app (registrering, losenordsaterstaallning osv.), polla inkorg-endpointen tills meddelandet anlaander:
curl https://evilmail.pro/api/inbox
-H 'X-API-Key: '"$EVILMAIL_API_KEY"I ett riktigt test skulle du kapsla in detta i en retry-loop med en timeout. Har ar ett praktiskt Python-exempel:
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 med CI/CD-pipelines
Detta monster fungerar smidigt med alla CI-system — GitHub Actions, GitLab CI, Jenkins, CircleCI. Grundprincipen ar: varje testkorrning far en unik engangsadress, kor sina pastaenden och adressen gar ut automatiskt. Inga cleanup-skript, inga delade brevlador som belamras, inga opaalitliga tester orsakade av kvarlaamnande e-post fran tidigare korrningar.
Ett GitHub Actions-steg kan se ut sa har:
- name: Run email integration tests
env:
EVILMAIL_API_KEY: ${{ secrets.EVILMAIL_API_KEY }}
run: pytest tests/email/ -v --timeout=120Vad du bor verifiera
Kontrollera inte bara att ett e-postmeddelande anlande. Verifiera amnesraden, avsandaradressen, forekomsten av kritiska lankar (verifierings-URL:er, aterstallningstoken) och att dessa lankar faktiskt leder till giltiga sidor. Ett komplett e-posttest validerar hela kedjan fran utlosare till leverans till innehallskorrekthet.
Skala upp till hundratals tester
For stora testsviter som behover manga samtidiga e-postadresser, anvand kontoskapande-endpointen for att skapa adresser under din egen doman. Detta ger dig full kontroll over namnrymden och undviker eventuell hastighetsbegransning pa temp-email-endpointen:
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"}'Nar testsviten ar klar, ta bort testkontona i bulk:
curl -X DELETE https://evilmail.pro/api/accounts
-H 'X-API-Key: '"$EVILMAIL_API_KEY"
-H 'Content-Type: application/json'
-d '{"emails": ["[email protected]"]}'Slutsatsen
E-posttestning bor inte vara den brakliga eftertanken i din testsvit. Med ett ordentligt API for engangse-post blir det lika deterministiskt och palitligt som alla andra integrationstester. Leverera med fortroendet att dina e-postmeddelanden faktiskt fungerar.


