Bắt đầu nhanh
Từ con số không đến một tin nhắn được đọc lại qua HTTP, chỉ trong bốn lệnh. Không cần tài khoản, không cần key, không cần SDK.
1. Chọn một địa chỉ
Bất kỳ tên nào, trên bất kỳ tên miền công khai nào của chúng tôi. Không có gì cần gọi và không có gì cần đăng ký — địa chỉ trở nên có thật ngay khi có thứ gì đó được gửi tới nó.
Hãy giữ nó khó đoán nếu bạn không muốn ai lạc vào: trên một tên miền công khai, địa chỉ là thứ duy nhất đứng giữa hộp thư và thế giới bên ngoài.
$ ADDR="ci-$(openssl rand -hex 4)@grabmail.io"; echo "$ADDR"2. Gửi thứ gì đó cho nó
Dùng nó trong biểu mẫu đăng ký, quy trình đặt lại mật khẩu hoặc bất cứ thứ gì bạn đang kiểm thử. Việc gửi thư thường mất khoảng vài giây.
Máy chủ thư của chúng tôi chấp nhận thư tới 5 MB. Bất cứ thứ gì lớn hơn sẽ bị từ chối ngay tại thời điểm SMTP, nên người gửi được báo ngay thay vì phải chờ đợi vô ích.
$ curl -sX POST https://your-app.example/signup --data-urlencode "email=$ADDR"3. Thăm dò hộp thư
Một yêu cầu mỗi giây là nhịp độ dự kiến và không bao giờ bị giới hạn. Một hộp thư trống trả về 200 kèm count: 0 — không bao giờ là 404, nên vòng lặp của bạn không cần xử lý riêng trường hợp đó.
Đoạn mã này bỏ cuộc sau một phút thay vì chạy mãi mãi, đó là điều bạn muốn trong CI.
$ for i in $(seq 60); do
ID=$(curl -sG https://grabmail.io/api/v1/mailbox --data-urlencode "address=$ADDR" | jq -r '.messages[0].id // empty')
[ -n "$ID" ] && break
sleep 1
done; echo "$ID"4. Đọc rồi bỏ đi
Lấy thư về và trích ra bất cứ thứ gì bạn cần — ở đây là một mã sáu chữ số từ phần văn bản thuần.
Việc xóa là tùy chọn: mọi thứ tự biến mất sau 5 ngày. Cứ làm trong CI, và lần chạy tiếp theo sẽ bắt đầu từ một hộp thư sạch.
$ curl -sG https://grabmail.io/api/v1/message/$ID --data-urlencode "mailbox=$ADDR" \
| jq -r .text | grep -oE '[0-9]{6}'
curl -sX DELETE -G https://grabmail.io/api/v1/message/$ID --data-urlencode "mailbox=$ADDR"Tích hợp vào CI
Hai thói quen giúp một bộ kiểm thử đọc thư thật không trở nên chập chờn:
- Một địa chỉ mới cho mỗi lần chạy
- Hãy tạo địa chỉ từ build id hoặc một hậu tố ngẫu nhiên. Dùng lại một địa chỉ qua nhiều lần chạy nghĩa là tin nhắn hôm qua có thể thỏa mãn phép kiểm tra hôm nay.
- Một hạn chót, không phải một số lần thử lại
- Kiểm tra theo thời hạn thực như trên. Số lần thử lại sẽ âm thầm tăng lên khi bên gửi của bạn chậm hơn.
- Không bao giờ dựa vào thời gian gửi thư để khẳng định điều gì
- Thư không phải là đồng bộ. Hãy khẳng định rằng tin nhắn sẽ đến, chứ không phải nó đến trong một giây cụ thể nào đó.
- Dùng tên miền riêng của bạn cho việc thật sự
- Một hộp thư công khai có thể được đọc bởi bất kỳ ai đoán được địa chỉ. Điều đó ổn với một lượt đăng ký dùng một lần, nhưng không ổn với một môi trường staging chứa dữ liệu khách hàng. Một bản ghi MX là đủ để khắc phục.
Dành cho AI agent: MCP
Một agent không thể đọc trang này, quyết định endpoint nó muốn và viết một yêu cầu. Nó hỏi một máy chủ có những công cụ nào và gọi chúng. grabmail chạy một máy chủ Model Context Protocol chính cho việc đó, tại https://grabmail.io/mcp — không cần khóa, không cần tài khoản.
Trỏ bất kỳ client MCP nào vào endpoint. Claude Desktop, Cursor, Continue và OpenAI Agents SDK đều đọc được cấu trúc này.
Sáu công cụ: create_inbox, list_domains, list_messages, read_message, delete_message và wait_for_message.
$ {"mcpServers":{"grabmail":{"url":"https://grabmail.io/mcp"}}}wait_for_message mới là cái quan trọng. Lý do một agent muốn có một hộp thư tạm thời hầu như luôn là một mã xác nhận đứng chắn giữa nó và bước tiếp theo. Thay vì thăm dò trong một vòng lặp tốn token, nó xin một địa chỉ, gửi biểu mẫu, và chờ cho đến khi thư đến:
Chờ tối đa 25 giây và trả về thư đầy đủ — người gửi, tiêu đề, nội dung — hoặc báo hết thời gian chờ để agent có thể đơn giản gọi lại.
Nó cũng có thể chờ một thư cụ thể: truyền subject_contains hoặc from_contains và mọi thư khác đến đều bị bỏ qua.
$ curl -sX POST https://grabmail.io/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"wait_for_message","arguments":{"address":"you@grabmail.io","subject_contains":"code"}}}'Cũng có đặc tả OpenAPI 3.1 (YAML) cho các trình tạo mã, và llms.txt cho những gì thích đọc văn bản thuần.
Tiếp theo
Tài liệu tham khảo API
Từng tham số, từng mã trạng thái, hình dạng của lỗi.
Giới hạn
Những gì bị giới hạn, những gì không, và điều gì xảy ra khi chạm trần.
Tên miền riêng của bạn
Biến mọi hộp thư trên tên miền của bạn thành riêng tư chỉ dành cho bạn.