Email Spam Tester

API

เรียกสามครั้ง ไม่ต้องใช้คีย์ ไม่ต้องมีบัญชี ไม่ต้องสมัคร

จองที่อยู่ ส่งข้อความที่คุณกำลังจะส่งไปยังรายชื่อผู้รับ แล้วอ่านรายงาน ทุกอย่างที่หน้าเว็บแสดงอยู่ใน JSON รวมถึงคะแนน ผลการตรวจสอบทั้ง 41 รายการพร้อมหลักฐาน และหัวข้อของมาตรฐานที่รองรับผลการตรวจสอบแต่ละรายการ

รายงาน 100,000 รายการแรกใช้งานได้ฟรี โดยไม่ต้องใช้คีย์และไม่ต้องมีบัญชี หากคุณกำลังเชื่อมต่อเอเจนต์แทนสคริปต์ เซิร์ฟเวอร์ MCP จะเหมาะกว่าการทำ polling

ลองใช้ในแซนด์บ็อกซ์ → ทุก endpoint มีปุ่มสำหรับเรียกใช้กับบริการจริง ทุกอย่างที่นี่ไม่ต้องใช้คีย์ ดังนั้นคำขอที่คุณส่งจากหน้านี้จึงเป็นคำขอจริง: คำขอนี้จะจองที่อยู่จริงและถูกนับรวม

ลำดับการทำงาน

คำขอสองครั้งและอีเมลหนึ่งฉบับ การเรียกครั้งที่สามมีไว้เพียงเพราะการวิเคราะห์ใช้เวลาสองสามวินาที

  1. จองที่อยู่

    ส่ง POST ไปยัง endpoint ของกล่องจดหมาย คุณจะได้รับที่อยู่ที่รับข้อความได้เพียงหนึ่งฉบับและหมดอายุภายในหนึ่งชั่วโมง พร้อม slug ที่ใช้เป็นคีย์อ้างอิงสำหรับทุกอย่างที่เหลือ

  2. ส่งข้อความจริงไปยังที่อยู่นั้น

    ส่งผ่าน SMTP จากแพลตฟอร์มที่จะใช้ส่งแคมเปญ การตรวจสอบครึ่งหนึ่งอ่านส่วนหัวที่แพลตฟอร์มส่งของคุณเพิ่มเข้ามา ดังนั้นข้อความที่เขียนขึ้นเองจึงวัดสิ่งที่ไม่ถูกต้อง

  3. ตรวจสอบสถานะเป็นระยะ แล้วอ่านรายงาน

    endpoint สถานะมีขนาดไม่กี่ร้อยไบต์และแจ้งให้คุณทราบว่าควรดึงรายงานฉบับเต็มแล้วหรือยัง ตัวรายงานมีความยาวหลายพันบรรทัด

# 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 นี้สามารถอ่านรายงานนั้นได้ และไม่มีใครอื่นเดา 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

ข้อความตามที่ได้รับมาอย่างถูกต้องทุกประการ: ทุกเฮดเดอร์ตามลำดับที่ส่งผ่านสาย เนื้อหาทั้งสองส่วน รายการไฟล์แนบ และซอร์สดิบ ดึงข้อมูลแยกต่างหากเพราะมีการเรียกตรวจสอบรายงานซ้ำ และข้อมูลส่วนนี้อาจมีขนาดถึงหนึ่งเมกะไบต์

ข้อความดิบจะถูกลบตามกำหนดเวลาของตัวเอง ซึ่งเร็วกว่ารายงาน หลังจากนั้น endpoint นี้จะตอบกลับด้วยเหตุผลแทนเนื้อหาต้นฉบับ

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

เปลี่ยนภาษาของรายการจองที่ยังไม่ได้ใช้งาน สำหรับ agent ที่ทราบว่าผู้ใช้ของตนอ่านภาษาใดหลังจากขอที่อยู่ไปแล้ว ระบบจะปฏิเสธเมื่อข้อความมาถึงแล้ว เพราะเมื่อถึงตอนนั้นการวิเคราะห์กำลังทำงานอยู่

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 อธิบายอะไร

รับที่อยู่สำหรับทดสอบ