Temp Mail をテストと CI に統合する

Mail.td の REST API は E2E テスト向けに設計 — サインアップ、パスワードリセット、メール起点ワークフローが正しく動くかを検証します。本ガイドは一般的なテストツールの統合パターンに焦点を当てます。

生のエンドポイント参照(リクエスト/レスポンス形式)は 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. 確認メールをポーリング(最大 30 秒)
  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 シークレットとして保管(漏洩したらダッシュボードからローテーション)
  • 各テストジョブが自分のメールボックスを作る — 並列ジョブ間の競合を防ぐ
  • テストごとに一意のアドレス(例 test-${RUN_ID}-${TEST_ID}@mail.td)を使い、失敗デバッグを容易に
  • クリーンアップ不要 — メールボックスは自動期限切れ、クリーンアップスクリプトは不要

より速いパイプライン用の Webhook(Pro

ポーリングはテストごとに遅延を加えます。長時間のテストスイートには、新着メール時に POST を受ける Webhook URL を登録。テストは 30 回ポーリングする代わりに Webhook の配信を待ちます。一般的な 5〜15 秒の待機を 1 秒未満に短縮。

Webhook は 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 は 429 と `Retry-After` ヘッダを返します。

Webhook 署名はどう動く?

各 Webhook の POST には Webhook シークレットから派生した署名ヘッダが含まれます。ペイロード処理前に署名を検証して、リクエストが Mail.td 由来で改ざんされていないことを確認してください。

E2E テストを並列実行できる?

はい — 競合を避けるため並列テストジョブごとに自分のメールボックスを与えてください。Pro の月 100,000 操作クォータでほとんどの CI ケースをカバーできます。

API は Free アカウントでも使える?

Free は月 500 回の API 操作 — 軽いスクリプト用途向け。CI/CD やより高いスループットが必要なら Pro へアップグレードを:月 100,000 操作と高いリクエストレート。