Email Spam Tester

ה-API

שלוש קריאות. ללא מפתח, ללא חשבון, ללא הרשמה.

שריינו כתובת, שלחו את ההודעה שעמדתם לשלוח לרשימה שלכם, וקראו את הדוח. כל מה שמוצג בדף נמצא ב-JSON, כולל הציון, כל 41 הבדיקות עם הראיות שלהן, והסעיף בתקן שעליו מבוסס כל ממצא.

100,000 הדוחות הראשונים הם בחינם, ללא מפתח וללא חשבון. אם אתם מחברים סוכן ולא סקריפט, שרת MCP מתאים יותר מתשאול חוזר.

נסו בארגז החול → כל נקודת קצה, עם כפתור שמפעיל אותה מול השירות הפעיל. שום דבר כאן אינו דורש מפתח, ולכן בקשה שתשלחו מדף זה היא בקשה אמיתית: היא מקצה כתובת אמיתית והיא נספרת.

התהליך

שתי בקשות והודעת דוא״ל אחת. הקריאה השלישית קיימת רק מפני שהניתוח נמשך כמה שניות.

  1. שריינו כתובת

    שלחו POST לנקודת הקצה של תיבת הדואר הנכנס. תקבלו בחזרה כתובת שמקבלת הודעה אחת בדיוק ותוקפה פג בתוך שעה, יחד עם המזהה הקצר שעליו מבוסס כל השאר.

  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

ההודעה בדיוק כפי שנמסרה: כל כותרת לפי הסדר בתעבורה, שני גופי ההודעה, רשימת הקבצים המצורפים והמקור הגולמי. מאוחזרת בנפרד משום שהדוח מתושאל שוב ושוב וגודלה יכול להגיע למגה-בייט.

ההודעה הגולמית נמחקת לפי לוח הזמנים שלה, מוקדם יותר מהדוח. לאחר מכן נקודת קצה זו מחזירה את הסיבה במקום את המקור.

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 מציינת את הדרישה שלה. נאספו ידנית ולא נוצרו אוטומטית, ולכן אפשר להסתמך עליהם.
תיקונים[]מה לשנות, לפי הסדר, עם מספר הנקודות שכל שינוי שווה. השיפור מחושב באמצעות ניקוד מחדש של הדוח, ולא באמצעות הערכה.
הושלםשקר כאשר לא ניתן היה להריץ בדיקה. פריט שלא נבדק לעולם אינו עובר, לכן יש להתייחס לציון כאופטימי עד שערך זה יהיה אמת.
כתובת_הדוחהדף הקריא לבני אדם. העבירו אותו לאדם במקום קיר של JSON.

סטטוסים

לבדיקה יש אחד מחמישה מצבים, וההבדל בין שניים מהם חשוב יותר מכפי שנראה.

עברהבדיקה רצה ולא מצאה שום בעיה.
אזהרהכדאי לתקן. עולה בנקודות.
נכשליפגע במסירה. מפחית יותר נקודות.
דילוגלא היה רלוונטי. אין קבצים מצורפים לסריקה, ואין חלק 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 מתאר.

קבלת כתובת בדיקה