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 を。