REST API của Mail.td được thiết kế cho kiểm thử end-to-end — xác minh đăng ký, đặt lại mật khẩu và workflow kích hoạt bằng email hoạt động đúng. Hướng dẫn này tập trung vào mẫu tích hợp cho công cụ kiểm thử thông dụng.
Tham chiếu endpoint thô (định dạng request/response) xem trang API hoặc docs.mail.td.
Selenium / Playwright / Cypress
Mẫu: tạo hộp thư mới trước mỗi test, đăng ký ứng dụng với địa chỉ đó, sau đó polling API cho email xác minh.
// Mã giả — thích nghi với mọi framework test
async function signUpFlow(page) {
// 1. Tạo hộp thư tạm
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. Đăng ký ứng dụng với mailbox.address
await page.goto("/signup");
await page.fill("[name=email]", mailbox.address);
await page.click("button[type=submit]");
// 3. Polling cho email xác minh (lên đến 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) {
// Phản hồi danh sách không có body — lấy chi tiết tin nhắn để có 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));
}
}
Pipeline CI/CD
Cho GitHub Actions, GitLab CI, CircleCI hoặc bất kỳ pipeline nào:
- Lưu một API token làm CI secret (xoay vòng từ bảng điều khiển khi rò rỉ)
- Mỗi job test tạo hộp thư riêng — ngăn race condition giữa các job song song
- Dùng địa chỉ duy nhất cho mỗi test (ví dụ
test-${RUN_ID}-${TEST_ID}@mail.td) để debug thất bại dễ hơn - Không cần dọn dẹp — hộp thư hết hạn tự động, không cần script dọn dẹp
Webhook cho pipeline nhanh hơn (Pro)
Polling thêm độ trễ cho mỗi test. Cho test suite dài, đăng ký URL webhook nhận POST khi email mới đến. Test của bạn chờ phân phối webhook thay vì polling 30 lần. Cắt thời gian chờ thông thường 5–15 giây xuống dưới 1 giây.
Webhook được ký bằng HMAC-SHA256 — xác minh header chữ ký trước khi xử lý.
Cài đặt SDK
npm install mailtd # Node.js / TypeScript
pip install mailtd # Python
go get github.com/mailtd/mailtd-go # Go
Tham chiếu endpoint đầy đủ: mail.td/api.