Email Spam Tester

API-ul

Trei apeluri. Fără cheie, fără cont, fără înregistrare.

Rezervă o adresă, trimite mesajul pe care urma să îl trimiți listei tale, citește raportul. Tot ce afișează pagina se află în JSON, inclusiv scorul, toate cele 41 de verificări cu dovezile lor și secțiunea standardului pe care se bazează fiecare constatare.

Primele 100.000 de rapoarte sunt gratuite, fără cheie și fără cont. Dacă integrați un agent în locul unui script, serverul MCP este mai potrivit decât interogarea periodică.

Încearcă în sandbox → Fiecare endpoint, cu un buton care îl rulează pe serviciul live. Nimic de aici nu necesită o cheie, așadar o solicitare pe care o trimiți de pe această pagină este una reală: rezervă o adresă reală și este contorizată.

Bucla

Două cereri și un e-mail. Al treilea apel există doar pentru că analiza durează câteva secunde.

  1. Rezervă o adresă

    Trimite o cerere POST către endpointul inbox. Primești o adresă care acceptă exact un mesaj și expiră într-o oră, împreună cu identificatorul slug pe baza căruia este indexat tot restul.

  2. Trimite-i mesajul real

    Prin SMTP, de pe platforma care va trimite campania. Jumătate dintre verificări citesc anteturile adăugate de platforma de trimitere, astfel încât un mesaj compus manual măsoară altceva.

  3. Interoghează starea, apoi citește raportul

    Endpointul de stare are câteva sute de octeți și îți spune dacă merită să preiei deja raportul complet. Raportul propriu-zis are câteva mii de linii.

# 1. reserve a single-use address
curl -sX POST 'https://email-spam-tester.com/api/v1/inbox?lang=en'

{
  "address": "test-<slug>@t.email-spam-tester.com",
  "slug": "<slug>",
  "expires_at": "2026-01-01T12:00:00Z"
}
# 2. send your message to that address, then poll
curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>/status'

{
  "slug": "<slug>",
  "analysis_status": "checks_ready",
  "ai_status": "running",
  "checks_done": 39,
  "checks_total": 39
}
# 3. read the report once analysis_status is checks_ready
curl -s 'https://email-spam-tester.com/api/v1/tests/<slug>'

{
  "report_url": "https://email-spam-tester.com/t/<slug>",
  "score_ours": 86.4,
  "score_compat": 9.2,
  "subscores": {"auth": 100.0, "infra_spam": 78.1, "content": 92.0, "compliance": 75.0},
  "complete": true,
  "checks": [
    {
      "id": "auth.dmarc",
      "status": "warn",
      "title": "DMARC result",
      "summary": "DMARC passes, but the policy is p=none.",
      "weight_ours": -4.0,
      "evidence": {"policy": "none", "aligned": "dkim"},
      "citations": {"standards": [{"title": "RFC 9989 §4.7", "quote": "..."}]}
    }
  ],
  "fixes": [
    {"id": "dmarc-enforce", "gain_ours": 4.0, "gain_compat": 0.0,
     "fix": {"title": "Move DMARC to quarantine", "severity": "medium"}}
  ]
}

Autentificare

Nu există. Nicio cheie de solicitat, niciun antet de setat, niciun cont de creat. Slugul pe care îl primiți este capabilitatea: oricine îl deține poate citi raportul respectiv și nimeni altcineva nu îl poate ghici.

Aceasta înseamnă și că un slug trebuie tratat ca o parolă. Un raport afișează subiectul, expeditorul, adresa pentru mesajele returnate și sursa completă a mesajului oricărei persoane care deține linkul.

Endpointuri

Adresa de bază https://email-spam-tester.com. Totul răspunde cu JSON.

POST/api/v1/inbox

Rezervă o adresă de unică folosință. Ambii parametri sunt opționali.

langLimba în care vor fi scrise planul de remediere și constatările pentru fiecare verificare, sub forma unui cod ISO. Este stabilită acum deoarece mesajul sosește prin SMTP câteva minute mai târziu și nu conține niciun indiciu despre cine îl așteaptă. Pentru un cod necunoscut se folosește implicit engleza.
utm_source, utm_medium, utm_campaignTransmise către sistemul nostru de analiză. Util dacă vă măsurați propria integrare.

GET/api/v1/tests/{slug}/status

Poate fi interogat frecvent. Returnează cele două câmpuri de stare și progresul verificărilor, fără nimic altceva.

Interogați acest endpoint în locul raportului. analysis_status ajunge mai întâi la checks_ready, iar planul AI apare în ai_status aproximativ un minut mai târziu, astfel încât un apelant care dorește doar verificările deterministe nu trebuie să aștepte planul.

GET/api/v1/tests/{slug}

Raportul complet. Răspunde cu 202 cât timp adresa este rezervată și încă nu a sosit nimic, apoi cu 200 după ce mesajul a sosit.

GET/api/v1/tests/{slug}/message

Mesajul exact așa cum a fost livrat: fiecare antet în ordinea transmisiei, ambele corpuri, lista atașamentelor și sursa brută. Este preluat separat deoarece raportul este interogat periodic, iar acesta poate ajunge la un megabyte.

Mesajul brut este șters după propriul său termen, mai devreme decât raportul. După aceea, acest endpoint răspunde cu motivul, nu cu sursa.

PUT/api/v1/tests/{slug}/locale

Schimbă limba unei rezervări care nu a fost încă utilizată. Pentru un agent care află ce limbă citește utilizatorul său după ce a solicitat deja adresa. Refuzată după sosirea mesajului, deoarece până atunci analiza este în curs.

GET/api/health

Stare activă. Fără autentificare, fără efecte secundare.

Citirea raportului

Câmpurile care conțin răspunsul, în ordinea în care probabil le doriți.

score_oursDe la 0 la 100. Modelul nostru. Autentificarea și infrastructura au cea mai mare pondere, deoarece ele decid livrarea înainte ca un filtru să citească vreun cuvânt din text.
score_compatDe la 0 la 10. Reproduce valoarea în stil SpamAssassin pe care oamenii o compară deja, astfel încât raportul să poată fi comparat cu ceea ce a văzut cineva în altă parte.
subscoresAceeași scară de la 0 la 100 pentru fiecare secțiune: auth, infra_spam, content, compliance.
checks[]Toate cele 41, fiecare cu o stare, o constatare pe un singur rând, dovezile pe baza cărora a fost stabilită și impactul asupra celor două scoruri.
checks[].citationsDe unde provine constatarea: secțiunea din RFC, citată textual, și pagina unde Google își precizează propria cerință. Selectate manual, nu generate, astfel încât să fie de încredere.
fixes[]Ce trebuie schimbat, în ordine, împreună cu punctele pe care le valorează fiecare schimbare. Câștigurile sunt calculate prin reevaluarea raportului, nu estimate.
completeFals atunci când o verificare nu a putut rula. Un element neverificat nu este niciodată unul trecut, deci considerați scorul optimist până când această valoare devine adevărată.
report_urlPagina într-un format ușor de citit. Dați-o unei persoane în locul unui zid de JSON.

Stări

O verificare are una dintre cinci stări, iar diferența dintre două dintre ele contează mai mult decât pare.

passVerificarea a rulat și nu a găsit nimic în neregulă.
warnMerită remediat. Costă puncte.
failVa afecta livrarea. Costă mai multe puncte.
omisNu s-a aplicat. Niciun atașament de scanat, nicio parte HTML de evaluat. Nu este o trecere.
eroareNu am putut determina rezultatul. Este exclus din scor și semnalat, în loc să fie considerat o trecere.

analysis_status trece prin received, analyzing, checks_ready, failed. ai_status trece prin pending, running, ready, fallback, error. Raportul determinist este final la checks_ready; ai_status doar adaugă planul.

Ce poate fi returnat

202Adresa este rezervată și nu a sosit niciun mesaj. Corpul răspunsului conține adresa, data expirării și limba, astfel încât un apelant care nu a creat rezervarea o poate afișa în continuare.
404Nu există un astfel de slug. Fie nu a existat niciodată, fie rezervarea a fost uitată.
410Adresa a expirat înainte de sosirea unui mesaj.
409Ați încercat să schimbați limba după ce mesajul sosise deja.
429Limita de teste gratuite pentru adresa dvs. În prezent, acest serviciu nu are o limită per persoană; dacă va fi stabilită vreodată una, corpul răspunsului indică momentul la care se resetează.

Patru lucruri de știut

Un mesaj per adresă

Al doilea este refuzat. Raportul anterior rămâne intact, acesta fiind scopul.

O oră pentru utilizare

Adresa expiră; raportul nu. Linkurile rapoartelor sunt permanente, astfel încât unul inserat într-un tichet continuă să funcționeze.

Trimiteți de pe platformă

Testarea unei campanii dintr-un cont personal măsoară acel cont. Aproape totul din secțiunea de autentificare se referă la infrastructura de trimitere, nu la text.

Retestați după remediere

Îmbunătățirile estimate sunt calculate pentru câte o remediere și nu se cumulează. Al doilea raport indică valoarea reală.

Pentru sisteme automate

Încearcă mai întâi unul manual

Durează aproximativ un minut și îți arată exact ceea ce descrie JSON.

Obține o adresă de test