nb

Pålitelig API-automatisering for midlertidig innboks

Bygg deterministiske registrerings- og passordtilbakestillingstester med unike adresser, avgrenset polling, presis meldingsmatching, sikker nøkkelhåndtering og nyttig feildokumentasjon.

17. juli 2026

En kompakt automatiseringssløyfe for å generere, motta, sjekke og rydde en innboks

Den upålitelige versjonen av en e‑posttest er kort: opprett en adresse, vent i fem sekunder, les den første meldingen, og håp at den tilhører denne kjøringen.

Den pålitelige versjonen er fortsatt enkel, men den behandler levering som asynkron. Den oppretter en unik adresse, registrerer en starttid, pøler innen en tidsfrist, matcher den tiltenkte meldingen, validerer produkthandlingen, og rapporterer nok kontekst når noe feiler.

Hold API-nøkkelen utenfor URL-en

Send GPTMail-nøkkelen i X-API-Key-headeren. Ikke legg den i ?api_key=-spørringsparametere. URL-er lagres rutinemessig i nettleserhistorikk, tilgangslogger, overvåkingssystemer og refererdata.

X-API-Key: YOUR_API_KEY

Lagre nøkkelen i din CI-hemmelige manager og maskér den i logger. En offentlig daglig nøkkel er praktisk for utforskning; kontrollerte automatiserte testsett bør bruke en nøkkel hvis kvote og bruk du kan spore.

De nåværende endepunktene og svar‑eksemplene vedlikeholdes på GPTMail API-dokumentasjonssiden.

En adresse per kjøring

Generer en ny adresse for hver uavhengig kjørbare test. Ikke avled korrekthet fra en innboks delt av hele testsettet.

Registrer adressen, scenario‑ID, miljø og teststarttid. Disse verdiene lar deg avvise utdaterte meldinger og diagnostisere kollisjoner uten å logge meldingshemmeligheter.

Poll mot en tidsfrist, ikke en fast ventetid

E‑postleveringstid varierer. En fast fem sekunders ventetid er både sløsing når leveringen er rask og ustabil når den er langsom.

Bruk en avgrenset løkke:

deadline = now + 90 seconds
delay = 2 seconds

while now < deadline:
  messages = list inbox
  candidate = newest message matching sender, subject, and start time
  if candidate exists:
    read candidate and continue the product test
  wait delay with a small random jitter
  delay = min(delay * 1.5, 10 seconds)

Tidsfristen tilhører testkontrakten. En passordtilbakestillingsflyt kan trenge en annen grense enn en forhåndsvisning av masseutsendelse. Hold grensen eksplisitt slik at en langsom avhengighet ikke stille forlenget hele CI‑jobben.

Match presist

«Første melding i innboksen» er ikke en nyttig selector. Match flere signaler:

  • mottaker er lik adressen opprettet for denne kjøringen;
  • opprettelsestid er senere enn utløsningstidspunktet;
  • avsender tilhører den forventede tjenesten;
  • emne eller meldingstype matcher flyten;
  • meldingens ID er ikke allerede brukt.

Når avsenderen kan utstede flere koder, velg den nyeste matchende meldingen. Bevar dens ID i testutdataene slik at gjenforsøk ikke ved et uhell bruker den igjen.

Les kun etter en liste‑match

Innbokslisten bør være det rimelige oppdagelsestrinnet. Hent hele meldingen kun for den valgte kandidaten. Dette reduserer unødvendig arbeid og unngår å parse irrelevante reklame‑e‑poster.

Valider forretningsresultatet, ikke bare tilstedeværelsen av en sekssifret streng. Send inn koden eller åpne den forventede lenken, og bekreft deretter at kontoen når riktig tilstand.

Håndter hastighetsbegrensninger som et signal

Hvis API-et returnerer en kvote‑ eller hastighetsbegrensningsrespons, stopp det nåværende forsøket og vis tilbakestillingsinformasjonen. Aggressive gjenforsøk gjør et klart kapasitetsignal til støy og kan forsinke urelaterte tester.

Begrens samtidighet i testkjøreren, spesielt når et sett oppretter mange adresser samtidig. En liten arbeidsgruppe er lettere å feilsøke enn hundrevis av samtidige polling‑løkker.

Rydd opp uten å skjule feil

Opprydding bør kjøres etter at bevis er samlet. Ved suksess, fjern meldinger eller la kort lagring håndtere dem. Ved feil, behold adressen og meldingens ID i beskyttede CI‑artifakter lenge nok til undersøkelse, og slett dem deretter.

Skriv aldri ut verifiseringskoder, private lenker eller komplette HTML‑kropper i offentlige bygglogger.

Gjør gjenforsøk idempotente

Gjenforsøk testen som en ny kjøring med en ny adresse. Ikke anta at å gjenta samme forespørsel mot samme konto og innboks starter fra en ren tilstand. Avsenderen kan ugyldiggjøre gamle koder, begrense gjentatte forespørsler, eller avvise dupliserte invitasjoner.

Hvis en nettverksforespørsel får tidsavbrudd, skill mellom «ingen respons mottatt» og «operasjonen skjedde ikke». Sjekk den observerbare tilstanden før du utfører et destruktivt gjenforsøk.

Rapporter feilpunktet

En nyttig automatiseringsfeil identifiserer ett av disse stadiene:

  1. adressegenerering mislyktes;
  2. produkthandling mislyktes før e‑post ble satt i kø;
  3. ingen matchende melding ankom før tidsfristen;
  4. melding ankom, men innholdet matchet ikke;
  5. verifiseringshandling mislyktes;
  6. opprydding mislyktes.

Den klassifiseringen gjør en intermitterende «e‑posttest mislyktes» til arbeid et team kan eie.

For den større testmatrisen, les En reell e‑posttestplan. For leveringsdiagnose, bruk Verifiserings‑e‑post kommer ikke: Finn det ødelagte trinnet.

GPTMail