在沙盒中試用 → 每個端點都有一個按鈕,可對即時服務執行該端點。這裡不需要金鑰,因此你從此頁面送出的請求是真實的:它會保留一個真實地址,並計入使用量。
流程
兩個請求和一封電子郵件。需要第三次呼叫只是因為分析需要幾秒鐘。
保留一個地址
向收件匣端點傳送 POST。您會取得一個只接受一封郵件且在一小時後到期的地址,以及其他所有項目用作索引的 slug。
將實際郵件傳送到該地址
透過 SMTP,從將傳送行銷活動的平台寄出。半數檢查會讀取傳送平台新增的標頭,因此手動撰寫的郵件會測量到錯誤的項目。
輪詢狀態,然後讀取報告
狀態端點的內容只有數百位元組,並會告知您是否已值得擷取完整報告。報告本身則有數千行。
# 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 就是存取憑證:持有它的人都能讀取該報告,其他人則無法猜出它。
端點
基底位址為 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
輪詢成本低。只傳回兩個狀態欄位及檢查進度,不包含其他內容。
GET/api/v1/tests/{slug}
完整報告。地址已保留但尚未收到任何內容時回應 202,收到後則回應 200。
GET/api/v1/tests/{slug}/message
郵件送達時的原貌:依傳輸順序排列的每個標頭、兩種內文、附件清單及原始來源。由於報告會被輪詢,而此內容可能大到一 MB,因此需另行擷取。
PUT/api/v1/tests/{slug}/locale
變更尚未使用之預留項目的語言。適用於已要求提供地址後,才得知使用者閱讀哪種語言的代理程式。郵件抵達後會拒絕變更,因為屆時分析已在執行。
GET/api/health
存活狀態。無須驗證,沒有副作用。
閱讀報告
包含答案的欄位,依照您可能想查看的順序排列。
| score_ours | 0 到 100。我們的模型。驗證和基礎設施占大部分權重,因為它們會在篩選器讀取文案中的任何文字之前決定郵件是否送達。 |
| score_compat | 0 到 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 | 您的地址已達免費測試上限。目前此服務沒有每人上限;如果日後設定,回應本文會說明何時重設。 |
值得知道的四件事
每個位址限一封郵件
第二封會被拒收。你先前的報告會保持不變,這正是此限制的目的。
一小時內使用
位址會過期;報告不會。報告連結永久有效,因此貼到工單中的連結會持續有效。
從平台寄送
從個人帳號測試行銷活動,衡量的是該帳號。驗證區段中的幾乎所有內容都與寄送基礎架構有關,而不是文字內容。
修正後重新測試
預期改善幅度是逐項修正計算的,無法合併計算。第二份報告才是如實的數字。
供機器使用
- /api/openapi.json OpenAPI 說明是由提供 API 的同一份程式碼產生。
- /llms.txt, /llms-full.txt 依照 llms.txt 慣例提供此網站的簡短導覽,以及將完整流程和報告欄位放在單一檔案中的較長版本。
- /mcp 具備相同功能並提供阻塞式等待的 MCP 伺服器,這比從模型內部進行輪詢更好。
- For agents 代理程式頁面:何時該使用此功能、如何解讀略過的檢查與通過的檢查,以及哪些發現是必須由人員變更的 DNS 記錄,而不是代理程式可編輯的文字。