Temp Mail को टेस्ट और CI में इंटीग्रेट करना

Mail.td का REST API एंड-टू-एंड परीक्षण के लिए डिज़ाइन किया गया है — सत्यापित करने के लिए कि साइनअप, पासवर्ड रीसेट, और ईमेल-ट्रिगर वर्कफ़्लो सही व्यवहार करते हैं। यह गाइड सामान्य परीक्षण उपकरणों के लिए एकीकरण पैटर्न पर केंद्रित है।

कच्चे एंडपॉइंट संदर्भ (अनुरोध/प्रतिक्रिया प्रारूप) के लिए, API पृष्ठ या docs.mail.td देखें।

Selenium / Playwright / Cypress

पैटर्न: प्रत्येक परीक्षण से पहले एक नया इनबॉक्स बनाएं, अपने ऐप को उस पते के साथ साइन अप करें, फिर सत्यापन ईमेल के लिए API को पोल करें।

// सूडोकोड — किसी भी टेस्ट फ्रेमवर्क के अनुकूल
async function signUpFlow(page) {
  // 1. अस्थायी मेलबॉक्स बनाएं
  const mailbox = await fetch("https://api.mail.td/api/accounts", {
    method: "POST",
    headers: {
      Authorization: "Bearer td_xxx",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      address: `test-${Date.now()}@mail.td`,
      password: "secret"
    })
  }).then(r => r.json());

  // 2. mailbox.address के साथ अपना ऐप साइन अप करें
  await page.goto("/signup");
  await page.fill("[name=email]", mailbox.address);
  await page.click("button[type=submit]");

  // 3. सत्यापन ईमेल के लिए पोल करें (30s तक)
  for (let i = 0; i < 30; i++) {
    const list = await fetch(
      `https://api.mail.td/api/accounts/${mailbox.id}/messages`,
      { headers: { Authorization: "Bearer td_xxx" } }
    ).then(r => r.json());
    if (list.messages.length > 0) {
      // सूची प्रतिक्रिया में बॉडी नहीं है — text_body प्राप्त करने के लिए संदेश विवरण लाएं
      const msg = await fetch(
        `https://api.mail.td/api/accounts/${mailbox.id}/messages/${list.messages[0].id}`,
        { headers: { Authorization: "Bearer td_xxx" } }
      ).then(r => r.json());
      const link = extractLink(msg.text_body);
      await page.goto(link);
      break;
    }
    await new Promise(r => setTimeout(r, 1000));
  }
}

CI/CD पाइपलाइन

GitHub Actions, GitLab CI, CircleCI, या किसी भी पाइपलाइन के लिए:

  • एक API टोकन को CI सीक्रेट के रूप में संग्रहीत करें (लीक होने पर डैशबोर्ड से घुमाएं)
  • प्रत्येक परीक्षण कार्य अपना खुद का मेलबॉक्स बनाता है — समानांतर कार्यों के बीच race condition को रोकता है
  • प्रति परीक्षण एक अद्वितीय पते का उपयोग करें (जैसे test-${RUN_ID}-${TEST_ID}@mail.td) ताकि विफलताओं को डिबग करना आसान हो
  • कोई सफाई आवश्यक नहीं — मेलबॉक्स स्वचालित रूप से समाप्त हो जाते हैं, कोई सफाई स्क्रिप्ट की आवश्यकता नहीं

तेज़ पाइपलाइन के लिए Webhooks (Pro)

पोलिंग प्रत्येक परीक्षण में विलंबता जोड़ती है। लंबे परीक्षण सूट के लिए, एक webhook URL पंजीकृत करें जो नया ईमेल आने पर POST प्राप्त करता है। आपका परीक्षण 30 बार पोलिंग के बजाय webhook डिलीवरी की प्रतीक्षा करता है। एक सामान्य 5–15 सेकंड की प्रतीक्षा को 1 सेकंड से कम कर देता है।

Webhooks HMAC-SHA256 के साथ हस्ताक्षरित हैं — प्रसंस्करण से पहले हस्ताक्षर हेडर सत्यापित करें।

SDK स्थापना

npm install mailtd       # Node.js / TypeScript
pip install mailtd       # Python
go get github.com/mailtd/mailtd-go    # Go

पूर्ण एंडपॉइंट संदर्भ के लिए, mail.td/api देखें।

अक्सर पूछे जाने वाले प्रश्न

मुझे API टोकन कहां मिलेगा?

Pro डैशबोर्ड → API Tokens → Create। टोकन `td_` उपसर्ग वाले होते हैं और निर्माण के समय केवल एक बार दिखाए जाते हैं — कॉपी करें और अपने CI सीक्रेट या पासवर्ड मैनेजर में संग्रहीत करें।

दर सीमा क्या है?

Free 1 अनुरोध/सेकंड है; Pro 10 अनुरोध/सेकंड है। यदि आप सीमा तक पहुंचते हैं, तो API `Retry-After` हेडर के साथ 429 लौटाता है।

Webhook हस्ताक्षर कैसे काम करते हैं?

प्रत्येक webhook POST में आपके webhook गुप्त से प्राप्त एक हस्ताक्षर हेडर शामिल होता है। पुष्टि करने के लिए कि अनुरोध Mail.td से आया है और बदला नहीं गया है, payload को संसाधित करने से पहले हस्ताक्षर सत्यापित करें।

क्या मैं end-to-end परीक्षण समानांतर में चला सकता हूं?

हां — race condition को रोकने के लिए प्रत्येक समानांतर परीक्षण कार्य को अपना मेलबॉक्स दें। Pro का 100,000 op/माह कोटा अधिकांश CI मामलों को कवर करता है।

क्या API Free खातों के लिए काम करता है?

Free में प्रति माह 500 API ऑपरेशन शामिल हैं — हल्की स्क्रिप्टिंग के लिए उपयुक्त। CI/CD या उच्च थ्रूपुट के लिए, Pro में अपग्रेड करें: 100,000 op/माह और उच्च अनुरोध दर।