Email Spam Tester

API

Trzy wywołania. Bez klucza, bez konta, bez rejestracji.

Zarezerwuj adres, wyślij wiadomość, którą zamierzasz wysłać do swojej listy, odczytaj raport. Wszystko, co pokazuje strona, znajduje się w JSON, w tym wynik, wszystkie 41 kontroli wraz z dowodami oraz sekcja standardu, na której opiera się każde ustalenie.

Pierwsze 100 000 raportów jest bezpłatnych, bez klucza i bez konta. Jeśli konfigurujesz agenta, a nie skrypt, serwer MCP jest lepszym rozwiązaniem niż odpytywanie.

Wypróbuj w środowisku testowym → Każdy endpoint ma przycisk, który uruchamia go w aktywnej usłudze. Nic tutaj nie wymaga klucza, więc żądanie wysłane z tej strony jest rzeczywiste: rezerwuje rzeczywisty adres i jest zliczane.

Cykl

Dwa żądania i jedna wiadomość e-mail. Trzecie wywołanie jest potrzebne tylko dlatego, że analiza trwa kilka sekund.

  1. Zarezerwuj adres

    Wyślij żądanie POST do punktu końcowego skrzynki odbiorczej. Otrzymasz adres, który przyjmuje dokładnie jedną wiadomość i wygasa po godzinie, oraz identyfikator, z którym powiązane są wszystkie pozostałe dane.

  2. Wyślij na niego rzeczywistą wiadomość

    Przez SMTP, z platformy, która wyśle kampanię. Połowa kontroli odczytuje nagłówki dodawane przez platformę wysyłającą, więc wiadomość utworzona ręcznie mierzy niewłaściwe rzeczy.

  3. Odpytuj o status, a następnie odczytaj raport

    Punkt końcowy statusu zwraca kilkaset bajtów i informuje, czy warto już pobrać pełny raport. Sam raport ma kilka tysięcy wierszy.

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

Uwierzytelnianie

Nie ma żadnego. Nie trzeba uzyskiwać klucza, ustawiać nagłówka ani tworzyć konta. Zwrócony slug jest uprawnieniem: każdy, kto go posiada, może odczytać ten raport, a nikt inny nie może go odgadnąć.

Oznacza to również, że slug należy traktować jak hasło. Raport pokazuje temat, nadawcę, adres zwrotny i pełne źródło wiadomości każdemu, kto ma link.

Punkty końcowe

Adres bazowy https://email-spam-tester.com. Wszystko zwraca JSON.

POST/api/v1/inbox

Rezerwuje adres jednorazowego użytku. Oba parametry są opcjonalne.

langJęzyk, w którym zostaną napisane plan naprawczy i wyniki poszczególnych testów, podany jako kod ISO. Jest ustalany teraz, ponieważ wiadomość dociera przez SMTP kilka minut później i nie zawiera żadnej wskazówki, kto na nią czeka. Nieznany kod powoduje użycie języka angielskiego.
utm_source, utm_medium, utm_campaignPrzekazywane do naszych narzędzi analitycznych. Przydatne, jeśli mierzysz własną integrację.

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

Niewielki koszt odpytywania. Zwraca dwa pola stanu oraz postęp testów i nic więcej.

Odpytuj ten punkt zamiast raportu. analysis_status najpierw osiąga checks_ready, a plan AI pojawia się w ai_status około minuty później, więc klient, który potrzebuje tylko deterministycznych testów, nie musi czekać na plan.

GET/api/v1/tests/{slug}

Cały raport. Zwraca 202, gdy adres jest zarezerwowany i nic jeszcze nie dotarło, oraz 200, gdy wiadomość już dotarła.

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

Wiadomość dokładnie w postaci, w jakiej została dostarczona: każdy nagłówek w kolejności przesłania, obie treści, lista załączników i surowe źródło. Jest pobierana osobno, ponieważ raport jest odpytywany, a ta odpowiedź może mieć rozmiar do megabajta.

Surowa wiadomość jest usuwana zgodnie z własnym harmonogramem, wcześniej niż raport. Po tym czasie ten endpoint zwraca powód zamiast źródła.

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

Zmienia język rezerwacji, która nie została jeszcze użyta. Dla agenta, który dowiaduje się, w jakim języku czyta jego użytkownik, po tym, jak poprosił już o adres. Żądanie jest odrzucane po nadejściu wiadomości, ponieważ analiza już wtedy trwa.

GET/api/health

Kontrola aktywności. Bez uwierzytelniania, bez skutków ubocznych.

Odczytywanie raportu

Pola zawierające odpowiedź, w kolejności, w której prawdopodobnie będą potrzebne.

score_oursOd 0 do 100. Nasz model. Uwierzytelnianie i infrastruktura mają największą wagę, ponieważ decydują o dostarczeniu, zanim filtr przeczyta choćby jedno słowo treści.
score_compatOd 0 do 10. Odtwarza wartość w stylu SpamAssassin, z którą użytkownicy już porównują wyniki, dzięki czemu raport można porównać z tym, co ktoś zobaczył gdzie indziej.
subscoresTa sama skala od 0 do 100 dla każdej sekcji: auth, infra_spam, content, compliance.
checks[]Wszystkie 41, każda ze statusem, jednowierszowym wynikiem, dowodami, na podstawie których podjęto decyzję, oraz wpływem na obie oceny.
checks[].citationsSkąd pochodzi ustalenie: sekcja RFC, zacytowana dosłownie, oraz strona, na której Google określa własne wymaganie. Opracowane ręcznie, a nie wygenerowane, więc można na nich polegać.
poprawki[]Co zmienić, w odpowiedniej kolejności, wraz z liczbą punktów przypisaną każdej zmianie. Korzyści są obliczane przez ponowne wyznaczenie wyniku raportu, a nie szacowane.
kompletneFałsz, gdy nie można było wykonać testu. Niesprawdzony element nigdy nie jest zaliczony, więc traktuj wynik jako optymistyczny, dopóki ta wartość nie będzie prawdziwa.
adres_url_raportuStrona czytelna dla człowieka. Przekaż ją osobie zamiast ściany tekstu JSON.

Statusy

Test ma jeden z pięciu statusów, a różnica między dwoma z nich ma większe znaczenie, niż się wydaje.

zaliczonyTest został wykonany i nie wykrył żadnych problemów.
ostrzeżenieWarto naprawić. Kosztuje punkty.
niezaliczonyMoże uniemożliwić dostarczenie. Kosztuje więcej punktów.
pomińNie dotyczyło. Brak załączników do przeskanowania, brak części HTML do oceny. To nie jest wynik pozytywny.
błądNie udało nam się tego ustalić. Wykluczono z punktacji i oznaczono, zamiast uznać za wynik pozytywny.

analysis_status przyjmuje wartości received, analyzing, checks_ready, failed. ai_status przyjmuje wartości pending, running, ready, fallback, error. Raport deterministyczny jest ostateczny przy checks_ready; ai_status jedynie dodaje plan.

Co może zostać zwrócone

202Adres jest zarezerwowany i żadna wiadomość jeszcze nie dotarła. Treść zawiera adres, termin wygaśnięcia i język, więc klient, który nie utworzył rezerwacji, nadal może je wyświetlić.
404Brak takiego identyfikatora. Nigdy nie istniał albo rezerwacja została zapomniana.
410Adres wygasł przed nadejściem wiadomości.
409Podjęto próbę zmiany języka po nadejściu wiadomości.
429Limit bezpłatnych testów dla Twojego adresu. Obecnie w tej usłudze nie ma limitu na osobę; jeśli kiedykolwiek zostanie ustawiony, treść podaje, kiedy zostanie zresetowany.

Cztery rzeczy, które warto wiedzieć

Jedna wiadomość na adres

Druga zostanie odrzucona. Wcześniejszy raport pozostanie bez zmian, o co właśnie chodzi.

Godzina na użycie

Adres wygasa; raport nie. Łącza do raportów są trwałe, więc łącze wklejone do zgłoszenia nadal działa.

Wysyłaj z platformy

Testowanie kampanii z konta osobistego mierzy to konto. Prawie wszystko w sekcji uwierzytelniania dotyczy infrastruktury wysyłającej, a nie tekstu.

Przetestuj ponownie po poprawkach

Oczekiwane korzyści są obliczane dla każdej poprawki z osobna i nie sumują się. Drugi raport podaje rzeczywisty wynik.

Dla maszyn

Najpierw wypróbuj ręcznie

Zajmuje to około minuty i pokazuje dokładnie to, co opisuje JSON.

Uzyskaj adres testowy