Temp Mail'i Testlere ve CI'ya Entegre Etmek

Mail.td REST API'si uçtan uca testler için tasarlandı — kayıtların, parola sıfırlamalarının ve e-posta tetikli iş akışlarının doğru davrandığını doğrulamak. Bu rehber yaygın test araçları için entegrasyon kalıplarına odaklanır.

Ham endpoint referansı (istek/yanıt formatları) için API sayfası veya docs.mail.td adresine bakın.

Selenium / Playwright / Cypress

Kalıp: her testten önce yeni bir gelen kutusu oluşturun, uygulamanızı bu adresle kaydedin, sonra API'yi doğrulama e-postası için yoklayın.

// Sözde kod — herhangi bir test çerçevesine uyarlanabilir
async function signUpFlow(page) {
  // 1. Geçici gelen kutusu oluştur
  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. Uygulamanızı mailbox.address ile kaydet
  await page.goto("/signup");
  await page.fill("[name=email]", mailbox.address);
  await page.click("button[type=submit]");

  // 3. Doğrulama e-postası için yoklama (30 saniyeye kadar)
  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) {
      // Liste yanıtında gövde yok — text_body almak için mesaj detayını çek
      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 pipeline'ları

GitHub Actions, GitLab CI, CircleCI veya herhangi bir pipeline için:

  • Bir API token'ını CI sırrı olarak saklayın (sızıntı durumunda panelden döndürün)
  • Her test işi kendi gelen kutusunu oluşturur — paralel işler arasındaki yarış koşullarını önler
  • Her test için benzersiz bir adres kullanın (örn. test-${RUN_ID}-${TEST_ID}@mail.td), arızaların hata ayıklamasını kolaylaştırır
  • Temizlik gerekmez — gelen kutuları otomatik olarak sona erer, temizlik scripti gerekmez

Daha hızlı pipeline'lar için webhook'lar (Pro)

Yoklama her teste gecikme ekler. Uzun süreli test paketleri için yeni e-posta geldiğinde POST alan bir webhook URL'i kaydedin. Testiniz 30 kez yoklama yapmak yerine webhook teslimini bekler. Tipik bir 5–15 saniye beklemeyi 1 saniyenin altına indirir.

Webhook'lar HMAC-SHA256 ile imzalıdır — işlemden önce imza üst bilgisini doğrulayın.

SDK kurulumu

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

Tüm endpoint referansı için mail.td/api adresine bakın.

Sıkça sorulan sorular

API token'ı nereden alabilirim?

Pro paneli → API Tokens → Create. Token'lar `td_` ön ekiyle başlar ve oluşturma sırasında yalnızca bir kez gösterilir — CI sırlarınıza veya parola yöneticinize kopyalayıp saklayın.

Hız sınırı nedir?

Free saniyede 1 istek; Pro saniyede 10 istek. Sınıra ulaşırsanız API 429 ve `Retry-After` üst bilgisi ile yanıt verir.

Webhook imzaları nasıl çalışır?

Her webhook POST'u, webhook sırrınızdan türetilen bir imza üst bilgisi içerir. Yükü işlemeden önce isteğin Mail.td'den geldiğini ve değiştirilmediğini doğrulamak için imzayı doğrulayın.

Uçtan uca testleri paralel çalıştırabilir miyim?

Evet — yarış koşullarını önlemek için her paralel test işine kendi gelen kutusunu verin. Pro'nun ayda 100.000 op kotası çoğu CI durumunu kapsar.

API Free hesaplarda çalışır mı?

Free ayda 500 API işlemi içerir — hafif scripting'e uygun. CI/CD veya daha yüksek verim için Pro'ya yükseltin: ayda 100.000 op ve daha yüksek istek hızı.