Email Spam Tester

API

三次呼叫。不需要金鑰、帳戶或註冊。

保留一個地址、傳送您原本要寄給名單的郵件,然後讀取報告。頁面顯示的所有內容都包含在 JSON 中,包括分數、全部 41 項檢查及其證據,以及每項發現所依據的標準章節。

前 100,000 份報告免費,不需要金鑰,也不需要帳戶。如果您要串接的是代理程式而非指令碼,MCP 伺服器會比輪詢更合適。

在沙盒中試用 → 每個端點都有一個按鈕,可對即時服務執行該端點。這裡不需要金鑰,因此你從此頁面送出的請求是真實的:它會保留一個真實地址,並計入使用量。

流程

兩個請求和一封電子郵件。需要第三次呼叫只是因為分析需要幾秒鐘。

  1. 保留一個地址

    向收件匣端點傳送 POST。您會取得一個只接受一封郵件且在一小時後到期的地址,以及其他所有項目用作索引的 slug。

  2. 將實際郵件傳送到該地址

    透過 SMTP,從將傳送行銷活動的平台寄出。半數檢查會讀取傳送平台新增的標頭,因此手動撰寫的郵件會測量到錯誤的項目。

  3. 輪詢狀態,然後讀取報告

    狀態端點的內容只有數百位元組,並會告知您是否已值得擷取完整報告。報告本身則有數千行。

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

驗證

沒有驗證。無須申請金鑰、無須設定標頭,也無須建立帳戶。你取得的 slug 就是存取憑證:持有它的人都能讀取該報告,其他人則無法猜出它。

這也表示應將 slug 視同密碼。任何持有連結的人,都能從報告中看到主旨、寄件者、退信地址及郵件的完整原始內容。

端點

基底位址為 https://email-spam-tester.com。所有回應皆為 JSON。

POST/api/v1/inbox

保留一個單次使用的地址。兩個參數皆為選填。

lang修正計畫與各項檢查結果所使用的語言,以 ISO 代碼表示。現在就決定,因為郵件會在幾分鐘後透過 SMTP 抵達,且不會提供任何線索指出誰正在等候它。未知的代碼會退回使用英文。
utm_source, utm_medium, utm_campaign傳遞至我們的分析系統。如果你要衡量自己的整合成效,這些參數會很有用。

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

輪詢成本低。只傳回兩個狀態欄位及檢查進度,不包含其他內容。

請輪詢此端點,而非報告端點。analysis_status 會先達到 checks_ready,而 AI 計畫約一分鐘後才會出現在 ai_status,因此只需要確定性檢查結果的呼叫端不必等待計畫。

GET/api/v1/tests/{slug}

完整報告。地址已保留但尚未收到任何內容時回應 202,收到後則回應 200。

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

郵件送達時的原貌:依傳輸順序排列的每個標頭、兩種內文、附件清單及原始來源。由於報告會被輪詢,而此內容可能大到一 MB,因此需另行擷取。

原始郵件會依其自身的計時自動刪除,比報告更早。之後,此端點會回傳原因,而不是原始內容。

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

變更尚未使用之預留項目的語言。適用於已要求提供地址後,才得知使用者閱讀哪種語言的代理程式。郵件抵達後會拒絕變更,因為屆時分析已在執行。

GET/api/health

存活狀態。無須驗證,沒有副作用。

閱讀報告

包含答案的欄位,依照您可能想查看的順序排列。

score_ours0 到 100。我們的模型。驗證和基礎設施占大部分權重,因為它們會在篩選器讀取文案中的任何文字之前決定郵件是否送達。
score_compat0 到 10。重現人們已用來比較的 SpamAssassin 式分數,因此該報告可與某人在其他地方看到的結果進行比較。
subscores每個區段皆使用相同的 0 到 100 分制:auth、infra_spam、content、compliance。
checks[]全部 41 項,每項都有狀態、單行結果、作為判定依據的證據,以及它對兩個分數造成的影響。
checks[].citations發現結果的來源:RFC 的相關章節、逐字引用的內容,以及 Google 說明其自身要求的頁面。這些資料是人工整理而非產生,因此可以信賴。
fixes[]依序列出要變更的項目,以及每項變更可獲得的分數。分數增益是透過重新評分報告計算得出,而非估算。
complete當檢查無法執行時為 False。未檢查的項目絕不算通過,因此在此值變為 true 之前,應將分數視為偏樂觀。
report_url供人閱讀的頁面。請將該頁面交給人員,而不是一大串 JSON。

狀態

一項檢查會處於五種狀態之一,其中兩種狀態之間的差異比看起來更重要。

pass檢查已執行,且未發現任何問題。
warn值得修正。會扣分。
fail會影響投遞。會扣除更多分數。
跳過不適用。沒有可掃描的附件,也沒有可評估的 HTML 部分。不算通過。
錯誤我們無法確定。已從評分中排除並標記,而不是計為通過。

analysis_status 會依序為 received、analyzing、checks_ready、failed。ai_status 會依序為 pending、running、ready、fallback、error。確定性報告在 checks_ready 時即為最終結果;ai_status 只會附加計畫。

可能傳回的內容

202此地址已保留,但尚未收到任何郵件。回應本文包含地址、到期時間和語言,因此即使呼叫端不是建立保留的那一方,仍可顯示這些資訊。
404查無此 slug。它可能從未存在,或保留已被遺忘。
410此地址在收到郵件前已到期。
409您嘗試在郵件已送達後變更語言。
429您的地址已達免費測試上限。目前此服務沒有每人上限;如果日後設定,回應本文會說明何時重設。

值得知道的四件事

每個位址限一封郵件

第二封會被拒收。你先前的報告會保持不變,這正是此限制的目的。

一小時內使用

位址會過期;報告不會。報告連結永久有效,因此貼到工單中的連結會持續有效。

從平台寄送

從個人帳號測試行銷活動,衡量的是該帳號。驗證區段中的幾乎所有內容都與寄送基礎架構有關,而不是文字內容。

修正後重新測試

預期改善幅度是逐項修正計算的,無法合併計算。第二份報告才是如實的數字。

供機器使用

先手動試一次

大約需要一分鐘,並會準確顯示 JSON 所描述的內容。

取得測試地址