Email Spam Tester

Die API

Drei Aufrufe. Kein Schlüssel, kein Konto, keine Registrierung.

Reservieren Sie eine Adresse, senden Sie die Nachricht, die Sie gerade an Ihre Liste senden wollten, und lesen Sie den Bericht. Alles, was die Seite anzeigt, ist im JSON enthalten, einschließlich der Bewertung, aller 41 Prüfungen mit ihren Belegen und des Abschnitts des Standards, auf dem jedes Ergebnis beruht.

Die ersten 100.000 Berichte sind kostenlos, ohne Schlüssel und ohne Konto. Wenn Sie einen Agenten statt eines Skripts anbinden, ist der MCP-Server besser geeignet als Polling.

In der Sandbox testen → Jeder Endpunkt mit einer Schaltfläche, die ihn im Live-Dienst ausführt. Hier ist kein Schlüssel erforderlich, daher ist eine Anfrage, die Sie von dieser Seite senden, eine echte Anfrage: Sie reserviert eine echte Adresse und wird gezählt.

Der Ablauf

Zwei Anfragen und eine E-Mail. Der dritte Aufruf ist nur erforderlich, weil die Analyse einige Sekunden dauert.

  1. Eine Adresse reservieren

    Senden Sie eine POST-Anfrage an den Posteingangs-Endpunkt. Sie erhalten eine Adresse zurück, die genau eine Nachricht akzeptiert und nach einer Stunde abläuft, sowie den Slug, über den alles Weitere zugeordnet wird.

  2. Die echte Nachricht dorthin senden

    Über SMTP, von der Plattform, die die Kampagne versenden wird. Die Hälfte der Prüfungen liest Header, die Ihre Versandplattform hinzufügt, daher misst eine manuell verfasste Nachricht das Falsche.

  3. Den Status abfragen, dann den Bericht lesen

    Der Status-Endpunkt ist einige Hundert Byte groß und teilt Ihnen mit, ob es sich bereits lohnt, den vollständigen Bericht abzurufen. Der Bericht selbst umfasst mehrere Tausend Zeilen.

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

Authentifizierung

Es gibt keine. Kein Schlüssel muss angefordert, kein Header gesetzt und kein Konto erstellt werden. Der zurückgegebene Slug ist die Zugriffsberechtigung: Wer ihn besitzt, kann diesen Bericht lesen, und niemand sonst kann ihn erraten.

Das bedeutet auch, dass ein Slug wie ein Passwort behandelt werden sollte. Ein Bericht zeigt jedem, der den Link besitzt, die Betreffzeile, den Absender, die Rücksendeadresse und den vollständigen Quelltext der Nachricht.

Endpunkte

Basisadresse https://email-spam-tester.com. Alles antwortet mit JSON.

POST/api/v1/inbox

Reserviert eine einmalig verwendbare Adresse. Beide Parameter sind optional.

langSprache, in der der Maßnahmenplan und die Ergebnisse der einzelnen Prüfungen verfasst werden, als ISO-Code. Dies wird jetzt festgelegt, weil die Nachricht Minuten später über SMTP eintrifft und keinen Hinweis darauf enthält, wer auf sie wartet. Bei einem unbekannten Code wird Englisch verwendet.
utm_source, utm_medium, utm_campaignWerden an unsere Analysen weitergegeben. Nützlich, wenn Sie Ihre eigene Integration messen.

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

Kann kostengünstig abgefragt werden. Gibt die beiden Statusfelder und den Fortschritt der Prüfungen zurück, sonst nichts.

Fragen Sie dies statt des Berichts ab. analysis_status erreicht zuerst checks_ready, und der KI-Plan erscheint etwa eine Minute später unter ai_status, sodass ein Aufrufer, der nur die deterministischen Prüfungen benötigt, nicht auf den Plan warten muss.

GET/api/v1/tests/{slug}

Der vollständige Bericht. Antwortet mit 202, solange die Adresse reserviert ist und noch nichts eingetroffen ist, und mit 200, sobald etwas eingetroffen ist.

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

Die Nachricht genau so, wie sie zugestellt wurde: jeder Header in der Übertragungsreihenfolge, beide Nachrichtentexte, die Liste der Anhänge und der rohe Quelltext. Wird separat abgerufen, weil der Bericht regelmäßig abgefragt wird und dies bis zu einem Megabyte groß sein kann.

Die Rohnachricht wird nach ihrem eigenen Zeitplan gelöscht, früher als der Bericht. Danach antwortet dieser Endpunkt mit dem Grund statt mit dem Quelltext.

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

Ändert die Sprache einer Reservierung, die noch nicht verwendet wurde. Für einen Agenten, der erst erfährt, welche Sprache sein Benutzer liest, nachdem er bereits nach der Adresse gefragt hat. Wird abgelehnt, sobald die Nachricht eingetroffen ist, weil die Analyse dann bereits läuft.

GET/api/health

Erreichbarkeitsprüfung. Keine Authentifizierung, keine Seiteneffekte.

Bericht lesen

Die Felder, die die Antwort enthalten, in der Reihenfolge, in der Sie sie wahrscheinlich benötigen.

score_ours0 bis 100. Unser Modell. Authentifizierung und Infrastruktur haben das größte Gewicht, weil sie über die Zustellung entscheiden, bevor ein Filter ein Wort des Nachrichtentexts liest.
score_compat0 bis 10. Bildet die SpamAssassin-ähnliche Zahl nach, die bereits für Vergleiche verwendet wird, sodass der Bericht mit dem vergleichbar ist, was jemand anderswo gesehen hat.
subscoresDieselbe Skala von 0 bis 100 pro Abschnitt: auth, infra_spam, content, compliance.
checks[]Alle 41, jeweils mit einem Status, einem einzeiligen Ergebnis, den Belegen, auf deren Grundlage entschieden wurde, und den Auswirkungen auf die beiden Bewertungen.
checks[].citationsWoher der Befund stammt: der Abschnitt des RFC, wörtlich zitiert, und die Seite, auf der Google seine eigene Anforderung nennt. Von Hand kuratiert statt generiert, sodass Sie sich darauf verlassen können.
fixes[]Was in welcher Reihenfolge zu ändern ist und wie viele Punkte jede Änderung wert ist. Die Zugewinne werden durch eine erneute Bewertung des Berichts berechnet, nicht geschätzt.
completeFalse, wenn eine Prüfung nicht ausgeführt werden konnte. Ein ungeprüfter Punkt gilt niemals als bestanden. Betrachten Sie die Punktzahl daher als optimistisch, bis dieser Wert true ist.
report_urlDie für Menschen lesbare Seite. Geben Sie diese einer Person statt einer Wand aus JSON.

Status

Eine Prüfung hat einen von fünf Status, und der Unterschied zwischen zweien davon ist wichtiger, als es scheint.

passDie Prüfung wurde ausgeführt und hat keinen Fehler gefunden.
warnSollte behoben werden. Kostet Punkte.
failBeeinträchtigt die Zustellung. Kostet mehr Punkte.
übersprungenNicht zutreffend. Keine Anhänge zum Scannen, kein HTML-Teil zum Gewichten. Gilt nicht als bestanden.
FehlerWir konnten es nicht feststellen. Wird von der Bewertung ausgeschlossen und gekennzeichnet, statt als bestanden gewertet zu werden.

analysis_status durchläuft received, analyzing, checks_ready, failed. ai_status durchläuft pending, running, ready, fallback, error. Der deterministische Bericht ist bei checks_ready endgültig; ai_status fügt immer nur den Plan hinzu.

Was zurückkommen kann

202Die Adresse ist reserviert und es ist keine Nachricht eingegangen. Der Antworttext enthält die Adresse, den Ablaufzeitpunkt und die Sprache, sodass ein Aufrufer, der die Reservierung nicht erstellt hat, sie dennoch anzeigen kann.
404Kein solcher Slug. Hat nie existiert oder die Reservierung wurde vergessen.
410Die Adresse ist abgelaufen, bevor eine Nachricht eingegangen ist.
409Sie haben versucht, die Sprache zu ändern, nachdem die Nachricht bereits eingegangen war.
429Das Limit für kostenlose Tests für Ihre Adresse. Derzeit gibt es bei diesem Dienst kein Limit pro Person; falls jemals eines festgelegt wird, gibt der Antworttext an, wann es zurückgesetzt wird.

Vier wissenswerte Dinge

Eine Nachricht pro Adresse

Die zweite wird abgelehnt. Ihr vorheriger Bericht bleibt unverändert, und genau das ist der Zweck.

Eine Stunde zur Nutzung

Die Adresse läuft ab; der Bericht nicht. Berichtslinks sind dauerhaft, sodass ein in ein Ticket eingefügter Link weiterhin funktioniert.

Von der Plattform senden

Wenn Sie eine Kampagne über ein persönliches Konto testen, messen Sie dieses Konto. Fast alles im Abschnitt zur Authentifizierung betrifft die Sendeinfrastruktur, nicht den Text.

Nach der Korrektur erneut testen

Die erwarteten Verbesserungen werden jeweils für eine einzelne Korrektur berechnet und lassen sich nicht kombinieren. Der zweite Bericht liefert den tatsächlichen Wert.

Für Maschinen

Probieren Sie zuerst einen Test manuell aus

Es dauert etwa eine Minute und zeigt Ihnen genau, was das JSON beschreibt.

Testadresse anfordern