ro

API de Cutie Poștală Temporară Fiabilă pentru Automatizare

Construiți teste deterministe de înscriere și resetare a parolei cu adrese unice, interogare limitată în timp, potrivire precisă a mesajelor, gestionare sigură a cheilor și dovezi utile ale eșecului.

17 iul. 2026

Un ciclu compact de automatizare pentru generarea, primirea, verificarea și curățarea unei cutii poștale

Versiunea nesigură a unui test de e‑mail este scurtă: creează o adresă, așteaptă cinci secunde, citește primul mesaj și speră că aparține acestei rulări.

Versiunea fiabilă este încă simplă, dar tratează livrarea ca asincronă. Creează o adresă unică, înregistrează ora de început, interoghează în cadrul unui termen limită, potrivește mesajul dorit, validează acțiunea produsului și raportează suficient context când ceva eșuează.

Ține cheia API în afara URL-ului

Trimite cheia GPTMail în antetul X-API-Key. Nu o pune în parametrii de interogare ?api_key=. URL-urile sunt stocate în mod obișnuit în istoricul browserului, jurnalele de acces, sistemele de monitorizare și datele de referință.

X-API-Key: YOUR_API_KEY

Stochează cheia în managerul de secrete al CI și mascheaz‑o în jurnale. O cheie publică zilnică este convenabilă pentru explorare; suitele automate controlate ar trebui să folosească o cheie al cărei cotă și utilizare poți urmări.

Endpoint‑urile curente și exemplele de răspuns sunt menținute pe pagina de documentație API GPTMail.

O adresă per rulare

Generează o adresă nouă pentru fiecare test executabil independent. Nu deriva corectitudinea dintr-o cutie poștală partajată de întregul set de teste.

Înregistrează adresa, ID‑ul scenariului, mediul și ora de început a testului. Aceste valori îți permit să respingi mesajele vechi și să diagnostichezi coliziunile fără a înregistra secretele mesajelor.

Interoghează până la termen limită, nu un somn fix

Timpul de livrare a e‑mailului variază. Un somn fix de cinci secunde este atât risipă când livrarea este rapidă, cât și instabil când este lentă.

Folosește un ciclu limitat:

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)

Termenul limită aparține contractului de test. Un flux de resetare a parolei poate necesita o limită diferită față de o previzualizare de newsletter în masă. Păstrează limita explicită astfel încât o dependență lentă să nu extindă silențios întregul job CI.

Potrivește precis

„Primul mesaj din cutie” nu este un selector util. Potrivește mai multe semnale:

  • destinatarul este egal cu adresa creată pentru această rulare;
  • timpul de creare este ulterior momentului declanșator;
  • expeditorul aparține serviciului așteptat;
  • subiectul sau tipul mesajului se potrivește fluxului;
  • ID‑ul mesajului nu a fost deja consumat.

Când expeditorul poate emite mai multe coduri, selectează cel mai recent mesaj care se potrivește. Păstrează ID‑ul său în output‑ul testului astfel încât reîncercările să nu îl reutilizeze accidental.

Citește doar după o potrivire în listă

Listarea cutiei poștale ar trebui să fie pasul de descoperire ieftin. Preia mesajul complet doar pentru candidatul selectat. Aceasta reduce munca inutilă și evită parsarea e‑mailurilor promoționale nelegate.

Validează rezultatul de business, nu doar prezența unui șir de șase cifre. Trimite codul sau deschide linkul așteptat, apoi afirmă că contul ajunge în starea corectă.

Tratează limitele de rată ca semnal

Dacă API‑ul returnează un răspuns de cotă sau limită de rată, oprește încercarea curentă și expune informațiile de resetare. Reîncercările agresive transformă un semnal clar de capacitate în zgomot și pot întârzia testele nelegate.

Limitează concurența la runner‑ul de teste, în special când un set creează multe adrese simultan. Un pool mic de lucrători este mai ușor de depanat decât sute de bucle de interogare simultane.

Curățare fără ascunderea eșecurilor

Curățarea ar trebui să ruleze după ce dovezile sunt capturate. La succes, elimină mesajele sau lasă retenția scurtă să le gestioneze. La eșec, păstrează adresa și ID‑ul mesajului în artefacte CI protejate suficient de mult pentru investigație, apoi șterge-le.

Nu afișa niciodată coduri de verificare, linkuri private sau corpuri HTML complete în jurnalele publice de build.

Fă reîncercările idempotente

Reîncearcă testul ca o rulare nouă cu o adresă nouă. Nu presupune că repetarea aceleiași cereri împotriva aceluiași cont și cutie poștală pornește dintr-un stare curată. Expeditorul poate invalida codurile vechi, limita cererile repetate sau respinge invitațiile duplicate.

Dacă o cerere de rețea expiră, diferențiază „niciun răspuns primit” de „operația nu a avut loc”. Verifică starea observabilă înainte de a emite o reîncercare distructivă.

Raportează punctul de eșec

Un eșec de automatizare util identifică una dintre aceste etape:

  1. generarea adresei a eșuat;
  2. acțiunea produsului a eșuat înainte de înfilarea e‑mailului;
  3. niciun mesaj potrivit nu a sosit înainte de termenul limită;
  4. mesajul a sosit, dar conținutul nu s‑a potrivit;
  5. acțiunea de verificare a eșuat;
  6. curățarea a eșuat.

Această clasificare transformă un „test de e‑mail eșuat” intermitent în muncă pe care o echipă o poate deține.

Pentru matricea de teste mai mare, citește Un Plan Real de Testare a E‑mailului. Pentru diagnosticarea livrării, folosește E‑mail de Verificare Neprins: Găsește Pasul Defect.

GPTMail