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

प्रमाणीकरण

कोई नहीं है। अनुरोध करने के लिए कोई कुंजी नहीं, सेट करने के लिए कोई हेडर नहीं, बनाने के लिए कोई खाता नहीं। आपको वापस मिलने वाला स्लग ही क्षमता है: जिसके पास यह है, वह उस रिपोर्ट को पढ़ सकता है, और कोई अन्य इसका अनुमान नहीं लगा सकता।

इसका यह भी अर्थ है कि स्लग को पासवर्ड की तरह संभालना चाहिए। रिपोर्ट लिंक रखने वाले किसी भी व्यक्ति को विषय पंक्ति, प्रेषक, बाउंस पता और संदेश का पूरा स्रोत दिखाती है।

एंडपॉइंट

मूल पता https://email-spam-tester.com। हर चीज़ JSON में उत्तर देती है।

POST/api/v1/inbox

एक बार उपयोग होने वाला पता आरक्षित करता है। दोनों पैरामीटर वैकल्पिक हैं।

langISO कोड के रूप में वह भाषा, जिसमें सुधार योजना और प्रत्येक जाँच के निष्कर्ष लिखे जाएँगे। यह अभी तय किया जाता है क्योंकि संदेश कुछ मिनट बाद SMTP के माध्यम से आता है और इसमें इसका कोई संकेत नहीं होता कि कौन इसकी प्रतीक्षा कर रहा है। किसी अज्ञात कोड के लिए English का उपयोग किया जाता है।
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

ऐसे reservation की भाषा बदलता है जिसका अभी तक उपयोग नहीं हुआ है। ऐसे agent के लिए, जो पता पहले ही मांग लेने के बाद यह जानता है कि उसका user कौन-सी भाषा पढ़ता है। संदेश पहुंच जाने के बाद अनुरोध अस्वीकार कर दिया जाता है, क्योंकि तब तक analysis चल रहा होता है।

GET/api/health

सक्रियता। कोई authentication नहीं, कोई side effect नहीं।

रिपोर्ट पढ़ना

वे fields जिनमें उत्तर होता है, उस क्रम में जिसमें आप शायद उन्हें देखना चाहेंगे।

score_ours0 से 100। हमारा model। Authentication और infrastructure का भार सबसे अधिक होता है, क्योंकि किसी filter द्वारा copy का एक भी शब्द पढ़े जाने से पहले वे delivery तय करते हैं।
score_compat0 से 10। उस SpamAssassin-शैली की संख्या को दोहराता है जिसकी लोग पहले से तुलना करते हैं, ताकि रिपोर्ट की तुलना उस चीज़ से की जा सके जिसे किसी ने कहीं और देखा था।
subscoresप्रति section वही 0 से 100 का scale: auth, infra_spam, content, compliance।
checks[]सभी 41, प्रत्येक में एक status, एक-पंक्ति का finding, वह evidence जिस पर निर्णय लिया गया और दोनों scores पर उसकी लागत।
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ऐसा कोई स्लग नहीं है। या तो वह कभी अस्तित्व में नहीं था, या आरक्षण भुला दिया गया था।
410संदेश आने से पहले ही पते की अवधि समाप्त हो गई।
409आपने संदेश के पहले ही आ जाने के बाद भाषा बदलने की कोशिश की।
429आपके पते के लिए निःशुल्क परीक्षण की सीमा। इस सेवा पर अभी प्रति व्यक्ति कोई सीमा नहीं है; यदि कभी कोई सीमा निर्धारित की जाती है, तो बॉडी बताती है कि वह कब रीसेट होती है।

जानने योग्य चार बातें

प्रति पते एक संदेश

दूसरा संदेश अस्वीकार कर दिया जाता है। आपकी पिछली रिपोर्ट जस की तस रहती है, और यही इसका उद्देश्य है।

इस्तेमाल के लिए एक घंटा

पता समाप्त हो जाता है; रिपोर्ट नहीं। रिपोर्ट के लिंक स्थायी होते हैं, इसलिए टिकट में चिपकाया गया लिंक काम करता रहता है।

प्लेटफ़ॉर्म से भेजें

व्यक्तिगत खाते से किसी अभियान का परीक्षण उस खाते को मापता है। प्रमाणीकरण अनुभाग में लगभग सब कुछ भेजने वाले इन्फ़्रास्ट्रक्चर के बारे में है, टेक्स्ट के बारे में नहीं।

ठीक करने के बाद फिर परीक्षण करें

अपेक्षित सुधारों की गणना एक बार में एक सुधार के लिए की जाती है और वे एक साथ नहीं जुड़ते। दूसरी रिपोर्ट सही संख्या बताती है।

मशीनों के लिए

पहले एक बार मैन्युअल रूप से आज़माएँ

इसमें लगभग एक मिनट लगता है और यह आपको ठीक वही दिखाता है जिसका वर्णन JSON करता है।

एक परीक्षण पता प्राप्त करें