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.

shell
$ 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.

shell
$ 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.

hỏi liên tục đến khi thư đến
$ 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.

đọc và xóa
$ 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_messagewait_for_message.

mcp.json
$ {"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.

MCP · wait_for_message
$ 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.

Mở tài liệu tham khảo →

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.

Mở trang giới hạ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.

Xem cách thiết lập →