REST API ของ Mail.td ออกแบบมาสำหรับการทดสอบ end-to-end — ตรวจสอบว่าการลงทะเบียน การรีเซ็ตรหัสผ่าน และเวิร์กโฟลว์ที่กระตุ้นด้วยอีเมลทำงานถูกต้อง คู่มือนี้มุ่งเน้น รูปแบบการผสาน สำหรับเครื่องมือทดสอบทั่วไป
สำหรับเอกสารอ้างอิง endpoint ดิบ (รูปแบบคำขอ/การตอบสนอง) ดู หน้า API หรือ docs.mail.td
Selenium / Playwright / Cypress
รูปแบบ: สร้างกล่องจดหมายใหม่ก่อนแต่ละการทดสอบ ลงทะเบียนแอปด้วยที่อยู่นั้น แล้ว polling API หาอีเมลยืนยัน
// pseudocode — ปรับให้เข้ากับเฟรมเวิร์กการทดสอบใดก็ได้
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. Polling สำหรับอีเมลยืนยัน (สูงสุด 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 token หนึ่งเป็น CI secret (หมุนจากแดชบอร์ดเมื่อรั่วไหล)
- งานทดสอบแต่ละงานสร้างกล่องจดหมาย ของตัวเอง — ป้องกัน race condition ระหว่างงานคู่ขนาน
- ใช้ที่อยู่ที่ไม่ซ้ำต่อการทดสอบ (เช่น
test-${RUN_ID}-${TEST_ID}@mail.td) เพื่อให้ดีบักความล้มเหลวง่ายขึ้น - ไม่ต้องล้าง — กล่องจดหมายหมดอายุอัตโนมัติ ไม่ต้องสคริปต์ล้าง
Webhook สำหรับไปป์ไลน์ที่เร็วขึ้น (Pro)
Polling เพิ่มความหน่วงให้แต่ละการทดสอบ สำหรับชุดทดสอบยาว ลงทะเบียน URL webhook ที่รับ POST เมื่ออีเมลใหม่มาถึง การทดสอบของคุณรอการส่ง webhook แทนที่จะ polling 30 ครั้ง ลดเวลารอทั่วไป 5–15 วินาทีให้น้อยกว่า 1 วินาที
Webhook ลงนามด้วย HMAC-SHA256 — ตรวจสอบ signature header ก่อนประมวลผล
การติดตั้ง SDK
npm install mailtd # Node.js / TypeScript
pip install mailtd # Python
go get github.com/mailtd/mailtd-go # Go
สำหรับการอ้างอิง endpoint แบบเต็ม ดู mail.td/api