Email Spam Tester

API

Üç çağrı. Anahtar yok, hesap yok, kayıt yok.

Bir adres ayırın, listenize göndermek üzere olduğunuz iletiyi gönderin, raporu okuyun. Puan, kanıtlarıyla birlikte 41 kontrolün tamamı ve her bulgunun dayandığı standart bölümü dahil olmak üzere sayfada gösterilen her şey JSON içindedir.

İlk 100.000 rapor ücretsizdir; anahtar ve hesap gerekmez. Bir betik yerine bir ajan bağlıyorsanız, MCP sunucusu yoklamadan daha uygundur.

Korumalı alanda deneyin → Her uç nokta, onu canlı hizmet üzerinde çalıştıran bir düğmeyle birlikte. Burada hiçbir şey için anahtar gerekmez, bu nedenle bu sayfadan gönderdiğiniz bir istek gerçektir: gerçek bir adres ayırır ve sayılır.

Döngü

İki istek ve bir e-posta. Üçüncü çağrı yalnızca analiz birkaç saniye sürdüğü için vardır.

  1. Bir adres ayırın

    Gelen kutusu uç noktasına POST isteği gönderin. Tam olarak bir ileti kabul eden ve bir saat içinde süresi dolan bir adresin yanı sıra diğer her şeyin anahtar olarak kullandığı kısa adı alırsınız.

  2. Gerçek iletiyi bu adrese gönderin

    SMTP üzerinden, kampanyayı gönderecek platformdan gönderin. Kontrollerin yarısı gönderim platformunuzun eklediği üstbilgileri okur, bu nedenle elle oluşturulan bir ileti yanlış şeyi ölçer.

  3. Durumu yoklayın, ardından raporu okuyun

    Durum uç noktası birkaç yüz bayttır ve tam raporu almaya değip değmediğini bildirir. Raporun kendisi birkaç bin satırdır.

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

Kimlik Doğrulama

Yoktur. Talep edilecek anahtar, ayarlanacak başlık veya oluşturulacak hesap yoktur. Aldığınız slug erişim yetkisidir: onu elinde bulunduran herkes bu raporu okuyabilir ve başka hiç kimse onu tahmin edemez.

Bu aynı zamanda bir slug'ın parola gibi ele alınması gerektiği anlamına gelir. Bir rapor, bağlantıyı elinde bulunduran herkese konu satırını, göndereni, geri dönüş adresini ve iletinin tam kaynağını gösterir.

Uç Noktalar

Temel adres https://email-spam-tester.com. Her şey JSON olarak yanıt verir.

POST/api/v1/inbox

Tek kullanımlık bir adres ayırır. Her iki parametre de isteğe bağlıdır.

langDüzeltme planının ve denetim başına bulguların yazılacağı dilin ISO kodu. Buna şimdi karar verilir çünkü ileti dakikalar sonra SMTP üzerinden gelir ve onu kimin beklediğine dair hiçbir ipucu taşımaz. Bilinmeyen bir kod için varsayılan olarak İngilizce kullanılır.
utm_source, utm_medium, utm_campaignAnaliz sistemimize aynen iletilir. Kendi entegrasyonunuzu ölçüyorsanız kullanışlıdır.

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

Sık sorgulamak düşük maliyetlidir. İki durum alanını ve denetimlerin ne kadar ilerlediğini döndürür, başka hiçbir şey döndürmez.

Rapor yerine bunu sorgulayın. analysis_status önce checks_ready durumuna ulaşır ve yapay zekâ planı yaklaşık bir dakika sonra ai_status alanına gelir; böylece yalnızca deterministik denetimleri isteyen bir çağrı sahibinin planı beklemesi gerekmez.

GET/api/v1/tests/{slug}

Raporun tamamı. Adres ayrılmışken ve henüz hiçbir şey ulaşmamışken 202, ulaştıktan sonra 200 yanıtını verir.

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

İleti tam olarak teslim edildiği şekliyle: iletim sırasındaki her başlık, her iki gövde, ek listesi ve ham kaynak. Rapor sorgulandığı ve bunun boyutu bir megabayta ulaşabildiği için ayrı olarak alınır.

Ham ileti, kendi zamanlayıcısına göre rapordan daha erken silinir. Bundan sonra bu uç nokta kaynak yerine gerekçeyle yanıt verir.

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

Henüz kullanılmamış bir rezervasyonun dilini değiştirir. Adresi zaten istemiş olan ve kullanıcısının hangi dili okuduğunu sonradan öğrenen bir aracı içindir. İleti ulaştıktan sonra reddedilir, çünkü o zamana kadar analiz çalışmaya başlamıştır.

GET/api/health

Canlılık denetimi. Kimlik doğrulama yok, yan etki yok.

Raporu okuma

Yanıtı taşıyan alanlar, muhtemelen isteyeceğiniz sırayla.

score_ours0 ile 100 arası. Bizim modelimiz. Kimlik doğrulama ve altyapı ağırlığın çoğunu taşır, çünkü bir filtre metindeki tek bir kelimeyi okumadan önce teslimata onlar karar verir.
score_compat0 ile 10 arası. Kullanıcıların zaten karşılaştırdığı SpamAssassin tarzı sayıyı yeniden üretir, böylece rapor birinin başka bir yerde gördüğü sonuçla karşılaştırılabilir.
subscoresHer bölüm için aynı 0 ile 100 arası ölçek: auth, infra_spam, content, compliance.
checks[]41 kontrolün tamamı; her biri bir durum, tek satırlık bir bulgu, kararın dayandığı kanıt ve iki puana maliyetiyle birlikte.
checks[].citationsBulgunun kaynağı: RFC'nin ilgili bölümü, birebir alıntısı ve Google'ın kendi gereksinimini belirttiği sayfa. Oluşturulmak yerine elle derlenmiştir, bu nedenle bunlara güvenilebilir.
düzeltmeler[]Yapılacak değişiklikler, sırasıyla ve her değişikliğin sağlayacağı puanlarla birlikte. Kazanımlar tahmin edilmez, rapor yeniden puanlanarak hesaplanır.
tamamlandıBir kontrol çalıştırılamadığında False olur. Kontrol edilmemiş bir öğe hiçbir zaman başarılı sayılmaz, bu nedenle true olana kadar puanı iyimser kabul edin.
rapor_urlİnsan tarafından okunabilen sayfa. JSON yığını yerine bunu bir kişiye verin.

Durumlar

Bir kontrol beş durumdan birindedir ve bunlardan ikisi arasındaki fark göründüğünden daha önemlidir.

başarılıKontrol çalıştı ve herhangi bir sorun bulmadı.
uyarıDüzeltilmeye değer. Puan kaybettirir.
başarısızTeslimata mal olur. Daha fazla puana mal olur.
atlaUygulanmadı. Taranacak ek yok, değerlendirilecek HTML bölümü yok. Başarılı sayılmaz.
hataSonucu belirleyemedik. Başarılı sayılmak yerine puanlamaya dahil edilmedi ve işaretlendi.

analysis_status received, analyzing, checks_ready, failed değerlerini alır. ai_status pending, running, ready, fallback, error değerlerini alır. Belirlenimci rapor checks_ready durumunda nihaidir; ai_status yalnızca planı ekler.

Neler dönebilir

202Adres rezerve edilmiştir ve henüz hiçbir ileti ulaşmamıştır. Gövde adresi, sona erme zamanını ve dili içerir; böylece rezervasyonu oluşturmamış bir çağıran da bunları gösterebilir.
404Böyle bir slug yok. Ya hiç var olmadı ya da rezervasyon unutuldu.
410Adres, bir ileti ulaşmadan önce sona erdi.
409İleti zaten ulaştıktan sonra dili değiştirmeyi denediniz.
429Adresiniz için ücretsiz test sınırı. Şu anda bu hizmette kişi başına bir sınır yoktur; ileride belirlenirse gövde, sınırın ne zaman sıfırlanacağını belirtir.

Bilinmesi gereken dört şey

Adres başına bir ileti

İkinci ileti reddedilir. Önceki raporunuz olduğu gibi kalır, amaç da budur.

Kullanmak için bir saat

Adresin süresi dolar; raporun dolmaz. Rapor bağlantıları kalıcıdır, dolayısıyla bir destek kaydına yapıştırılan bağlantı çalışmaya devam eder.

Platformdan gönderin

Bir kampanyayı kişisel bir hesaptan test etmek, o hesabı ölçer. Kimlik doğrulama bölümündeki hemen hemen her şey metinle değil, gönderim altyapısıyla ilgilidir.

Düzelttikten sonra yeniden test edin

Beklenen kazanımlar her seferinde tek bir düzeltme için hesaplanır ve birleşmez. İkinci rapor doğru değeri verir.

Makineler için

Önce birini elle deneyin

Yaklaşık bir dakika sürer ve JSON'ın neyi açıkladığını tam olarak gösterir.

Bir test adresi alın