API inboxsink
Hộp thư dùng một lần điều khiển bằng mã, để kiểm thử luồng đăng ký mà không phụ thuộc vào hòm thư thật. Năm tuyến, một cơ sở tại https://inboxsink.com, JSON.
Tuyến thực sự thay đổi mọi thứ là wait: nó chặn cho tới khi thư tới. Thiếu nó, một bài kiểm thử đầu-cuối phải đoán bằng sleep và trở nên bấp bênh ngay khi hàng đợi gửi bị chậm.
Một nghìn lượt gọi mỗi tháng, không cần thẻ. Đủ để gắn vào bộ kiểm thử của bạn và xem nó có trụ được không.
Sau đó, khi các bài kiểm thử của bạn bắt đầu bị từ chối: tên miền riêng của bạn không được công bố ở đâu cả, nên không rơi vào danh sách chặn nào — 29 € mỗi tháng.
Thư viện JavaScript
Một gói không có bất kỳ phụ thuộc nào, cho Node 18 trở lên. Mã nguồn trên GitHub.
npm i inboxsink
import { InboxSink } from 'inboxsink'; const sink = new InboxSink(process.env.INBOXSINK_API_KEY); const inbox = await sink.createInbox(); const code = await sink.waitForOtp(inbox.id); // '204815'
waitForOtp ném lỗi thay vì trả về null khi không có mã nào tới: một bài kiểm thử phải hỏng ồn ào, chứ không lặng lẽ điền vào ô trống.
Xác thực
Một tiêu đề Authorization cho mỗi lần gọi. Khoá được tạo từ bảng điều khiển và bắt đầu bằng ibsk_.
curl -H "Authorization: Bearer ibsk_…" \
https://inboxsink.com/v1/domains
Khoá ở dạng đọc được chỉ hiện lúc tạo. Sau đó chỉ còn thấy tiền tố của nó — chúng tôi chỉ lưu dấu vân của khoá.
Tạo một hộp thư
Mọi tham số đều tuỳ chọn: domain (mặc định một tên miền ngẫu nhiên trong nhóm), prefix (mặc định ngẫu nhiên), ttl_seconds (từ 60 giây đến 30 ngày).
curl -X POST https://inboxsink.com/v1/inboxes \ -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \ -d '{"ttl_seconds": 900}' → 201 { "id": "42", "address": "9f2c1a@mailhusk.com", "expires_at": "2026-09-01T15:12:00Z" }
Hộp thư tạo qua API là riêng tư: chỉ khoá đã tạo ra nó mới đọc được.
Chờ một thư
Chặn cho tới khi có thư, rồi trả lời ngay. timeout tính bằng mili giây (mặc định 30 000, tối đa 120 000), since để chỉ nhận các thư sau một định danh.
Trả về 204 không có nội dung nếu hết thời gian mà không có thư — đó không phải lỗi, đó là câu trả lời bình thường cho «không có gì tới cả».
curl -H "Authorization: Bearer $KEY" \ "https://inboxsink.com/v1/inboxes/42/wait?timeout=45000" → 200 { "message": { "id": "913", "from": "no-reply@acme.com", "subject": "…", "otp": "204815", "link": "https://acme.com/confirm/9f3a" } }
otp và link đã được trích sẵn cho bạn. Mã chỉ được báo khi thư thực sự thông báo một mã («mã», «xác minh», «đăng nhập»…) — số tiền hoá đơn hay một năm sẽ không bao giờ bị nhầm thành mã.
Liệt kê thư
Nhận since và limit (mặc định 50, tối đa 200). Trả về bản tóm tắt, không kèm nội dung thư.
Đọc một thư
Toàn bộ thư: text, html, headers và danh sách tệp đính kèm.
Xoá một hộp thư
Xoá hộp thư và các thư của nó ngay lập tức. Trả về 204.
Lỗi
| 204 | Không có nội dung — với wait, hết thời gian mà không có thư |
| 400 | Tham số không hợp lệ |
| 401 | Thiếu khoá, khoá lạ hoặc đã bị thu hồi |
| 403 | Hộp thư đó thuộc về một khoá khác |
| 404 | Hộp thư hoặc thư không tồn tại, hoặc đã hết hạn |
| 429 | Gọi quá nhiều |
Giới hạn và thời gian sống
Hộp thư trong nhóm công khai sống một giờ; hộp tạo qua API theo ttl_seconds của chúng, tối đa ba mươi ngày. Hết hạn, hộp thư và thư bị xoá — không có kho lưu trữ nào để lấy lại sau đó.
Thư trên mười megabyte bị từ chối ngay khi nhận. Địa chỉ thuộc tên miền lạ bị từ chối ngay trong phiên SMTP, không sinh ra thư báo lỗi ngược.
Các hộp thư này không thể gửi thư, và đó là chủ ý: một thư gửi từ tên miền dùng một lần sẽ không tới được đâu cả.