Email Spam Tester

API

Kolme kutsua. Ei avainta, tiliä eikä rekisteröitymistä.

Varaa osoite, lähetä viesti, jonka olit aikeissa lähettää listallesi, ja lue raportti. Kaikki sivulla näkyvä on JSON-vastauksessa, mukaan lukien pisteet, kaikki 41 tarkistusta todisteineen ja standardin kohta, johon kukin havainto perustuu.

Ensimmäiset 100 000 raporttia ovat ilmaisia, eikä avainta tai tiliä tarvita. Jos integroit agenttia komentosarjan sijaan, MCP-palvelin sopii paremmin kuin toistuva kysely.

Kokeile sandboxissa → Jokainen päätepiste, painikkeella, joka suorittaa sen reaaliaikaista palvelua vasten. Mikään täällä ei vaadi avainta, joten tältä sivulta lähettämäsi pyyntö on todellinen: se varaa todellisen osoitteen ja se lasketaan mukaan.

Kierto

Kaksi pyyntöä ja yksi sähköposti. Kolmas kutsu tarvitaan vain siksi, että analyysi kestää muutaman sekunnin.

  1. Varaa osoite

    Lähetä POST-pyyntö inbox-päätepisteeseen. Saat osoitteen, joka hyväksyy täsmälleen yhden viestin ja vanhenee tunnissa, sekä tunnisteen, johon kaikki muu perustuu.

  2. Lähetä oikea viesti siihen

    Lähetä se SMTP:n kautta alustalta, joka lähettää kampanjan. Puolet tarkistuksista lukee lähetysalustan lisäämiä otsakkeita, joten käsin laadittu viesti mittaa väärää asiaa.

  3. Kysy tilaa ja lue sitten raportti

    Tilapäätepisteen vastaus on muutaman sadan tavun kokoinen ja kertoo, kannattaako koko raportti jo hakea. Itse raportti on useita tuhansia rivejä pitkä.

# 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"}}
  ]
}

Todennus

Sitä ei ole. Ei pyydettävää avainta, asetettavaa otsaketta eikä luotavaa tiliä. Palautettu slug-tunniste toimii käyttöoikeutena: sen haltija voi lukea raportin, eivätkä muut voi arvata sitä.

Tämä tarkoittaa myös, että slug-tunnistetta kannattaa käsitellä salasanan tavoin. Raportti näyttää aiherivin, lähettäjän, palautusosoitteen ja viestin koko lähdekoodin kaikille, joilla on linkki.

Päätepisteet

Perusosoite https://email-spam-tester.com. Kaikki vastaukset ovat JSON-muodossa.

POST/api/v1/inbox

Varaa kertakäyttöisen osoitteen. Molemmat parametrit ovat valinnaisia.

langKieli, jolla korjaussuunnitelma ja tarkistuskohtaiset havainnot kirjoitetaan, ISO-koodina. Tämä päätetään nyt, koska viesti saapuu SMTP:n kautta minuutteja myöhemmin eikä sisällä tietoa siitä, kuka sitä odottaa. Tuntemattoman koodin tapauksessa käytetään englantia.
utm_source, utm_medium, utm_campaignVälitetään analytiikkaamme. Hyödyllinen, jos mittaat omaa integraatiotasi.

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

Kevyt pollata. Palauttaa kaksi tilakenttää ja tarkistusten etenemisen, eikä mitään muuta.

Pollaa tätä raportin sijaan. analysis_status saavuttaa ensin tilan checks_ready, ja AI-suunnitelma tulee ai_status-kenttään noin minuuttia myöhemmin, joten pelkät deterministiset tarkistukset haluavan kutsujan ei tarvitse odottaa suunnitelmaa.

GET/api/v1/tests/{slug}

Koko raportti. Palauttaa 202, kun osoite on varattu eikä mitään ole vielä saapunut, ja 200, kun viesti on saapunut.

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

Viesti täsmälleen toimitetussa muodossa: kaikki otsakkeet siirtojärjestyksessä, molemmat viestirungot, liiteluettelo ja raakalähde. Haetaan erikseen, koska raporttia pollataan ja tämän koko voi nousta megatavuun.

Raakaviesti poistetaan oman aikataulunsa mukaisesti ennen raporttia. Sen jälkeen tämä päätepiste vastaa syyllä lähdetietojen sijaan.

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

Vaihtaa sellaisen varauksen kielen, jota ei ole vielä käytetty. Tarkoitettu agentille, joka saa tietää käyttäjänsä lukeman kielen vasta pyydettyään jo osoitetta. Pyyntö hylätään viestin saavuttua, koska analyysi on silloin jo käynnissä.

GET/api/health

Toimivuustarkistus. Ei todennusta, ei sivuvaikutuksia.

Raportin lukeminen

Vastauksen sisältävät kentät siinä järjestyksessä, jossa todennäköisesti haluat ne.

score_ours0–100. Oma mallimme. Todennuksella ja infrastruktuurilla on suurin paino, koska ne ratkaisevat toimituksen ennen kuin suodatin lukee sanaakaan viestin tekstistä.
score_compat0–10. Toistaa SpamAssassin-tyylisen luvun, johon ihmiset jo vertaavat tuloksia, jotta raporttia voi verrata muualla nähtyihin tuloksiin.
subscoresSama asteikko 0–100 osiota kohden: auth, infra_spam, content, compliance.
checks[]Kaikki 41, jokaisessa tila, yhden rivin havainto, päätöksen perustana ollut näyttö ja vaikutus kumpaankin pistemäärään.
checks[].citationsMistä havainto on peräisin: RFC:n kohta sanatarkasti lainattuna ja sivu, jolla Google ilmoittaa oman vaatimuksensa. Koottu käsin eikä generoitu, joten niihin voi luottaa.
korjaukset[]Mitä muuttaa, missä järjestyksessä ja kuinka monta pistettä kustakin muutoksesta saa. Parannukset lasketaan pisteyttämällä raportti uudelleen, niitä ei arvioida.
valmisEpätosi, kun tarkistusta ei voitu suorittaa. Tarkistamaton kohde ei koskaan ole hyväksytty, joten pidä pisteytystä optimistisena, kunnes arvo on tosi.
raportin_urlIhmisen luettavissa oleva sivu. Anna se henkilölle JSON-tekstiseinän sijaan.

Tilat

Tarkistuksella on yksi viidestä tilasta, ja kahden niistä välinen ero on merkityksellisempi kuin miltä näyttää.

hyväksyttyTarkistus suoritettiin, eikä siinä havaittu ongelmia.
varoitusKannattaa korjata. Vähentää pisteitä.
hylättyHeikentää toimitettavuutta. Maksaa enemmän pisteitä.
ohitettuEi soveltunut. Ei tarkistettavia liitteitä eikä arvioitavaa HTML-osaa. Ei tarkoita läpäisyä.
virheEmme pystyneet selvittämään tulosta. Se jätetään pisteytyksen ulkopuolelle ja merkitään, eikä sitä lasketa läpäisyksi.

analysis_status voi olla received, analyzing, checks_ready tai failed. ai_status voi olla pending, running, ready, fallback tai error. Deterministinen raportti on lopullinen tilassa checks_ready; ai_status lisää vain suunnitelman.

Mitä voidaan palauttaa

202Osoite on varattu, eikä viestiä ole saapunut. Runko sisältää osoitteen, vanhenemisajan ja kielen, joten kutsuja, joka ei luonut varausta, voi silti näyttää sen.
404Tällaista tunnistetta ei ole. Sitä ei ole koskaan ollut, tai varaus unohdettiin.
410Osoite vanheni ennen viestin saapumista.
409Yritit vaihtaa kieltä sen jälkeen, kun viesti oli jo saapunut.
429Osoitteesi ilmaisten testien raja. Tässä palvelussa ei tällä hetkellä ole henkilökohtaista rajaa; jos sellainen joskus asetetaan, runko kertoo, milloin se nollautuu.

Neljä tietämisen arvoista asiaa

Yksi viesti osoitetta kohden

Toinen viesti hylätään. Aiempi raporttisi säilyy muuttumattomana, mikä on tarkoituskin.

Tunti aikaa käyttää sitä

Osoite vanhenee, mutta raportti ei. Raporttilinkit ovat pysyviä, joten tukipyyntöön liitetty linkki toimii jatkossakin.

Lähetä alustalta

Kampanjan testaaminen henkilökohtaiselta tililtä mittaa kyseistä tiliä. Lähes kaikki todennusosiossa koskee lähetysinfrastruktuuria, ei tekstiä.

Testaa uudelleen korjauksen jälkeen

Odotetut parannukset lasketaan yksi korjaus kerrallaan, eivätkä ne summaudu. Toinen raportti antaa rehellisen luvun.

Koneille

Kokeile ensin yhtä käsin

Se kestää noin minuutin ja näyttää täsmälleen, mitä JSON kuvaa.

Hanki testiosoite