Mail.td REST API는 종단 간 테스트용으로 설계되었습니다 — 가입, 비밀번호 재설정, 메일 트리거 워크플로가 올바르게 동작하는지 검증. 이 가이드는 일반적인 테스트 도구의 통합 패턴에 집중합니다.
원본 엔드포인트 참조(요청/응답 형식)는 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를 보세요.