| Tool | Cost | Account | Read mail via API | Inbox privacy | Retention |
|---|---|---|---|---|---|
| receivemail.dev | Free, no signup; Pro $7/mo | None | Yes, no key needed | Private (per-mailbox secret) | Free 60 min, Pro 24 h |
| mail.tm | Free, no paid tiers | None (mailbox created via API) | Yes, no key; 8 req/s per IP | Private (password) | Not published |
| Mailsac | Free 1,500 ops/mo; from $18/mo | For API key / private inbox | Yes, with key | Public without account; 1 private address free | Plan-dependent |
| Mailinator | Public inboxes free; Verified Pro $0 on approval; Business $79/mo (yearly) | For private inboxes / API | Not on the public tier | Public, unless on a private domain | Temporary on the public tier |
| MailSlurp | Free: 100 inboxes, 500 emails/mo; from $19.99/mo | Required | Yes, with key | Private | Persistent |
| Mailosaur | No free plan; 14-day trial, from $20/mo (yearly) | Required | Yes, with key | Private (own server/domain) | Persistent |
| testmail.app | Free 100 emails/mo; from $9/mo (yearly) | Required | Full API from the $9 plan | Private namespace | Free 1 day |
| Mailpit | Free, self-hosted | None (you run it) | Yes (REST) | Your own server | Your choice |
Checked against each vendor's pricing and docs pages on 26 October 2026. Plans change — confirm on their sites before you commit. Mailpit only catches mail your own app sends to it over SMTP; it can't receive from a third-party service sending to a public address.
Resend Inboxes gives each AI agent an email address of its own: it can receive mail, reply and send, as part of a Resend account. The free plan lists up to 3 inboxes and 3,000 emails sent or received. It fits an agent that needs to be reachable at the same address for weeks — taking tasks, approvals or replies by email.
receivemail.dev does a narrower job: create a fresh address from code, receive one email, read it, throw the address away. No account, no key, no per-account inbox limit (20 new a minute per IP, and a daily limit shared by all free users; Pro keys get 120 a minute). That is what a test suite or an agent testing a signup flow needs — a new address every run, never reused.
| receivemail.dev | Resend Inboxes | |
|---|---|---|
| Made for | Tests: verification emails, signup flows | AI agents with a permanent address |
| Account / signup | None | Resend account |
| Free inboxes | No per-account limit (20 new per minute per IP, shared daily limit) | Up to 3 |
| Free email volume | No monthly quota per account (rate-limited instead) | 3,000 emails sent/received |
| Send email | No — receive only | Yes |
| Address lifetime | 1–60 min free, up to 24 h on Pro | Permanent |
| Verification code extracted | Yes, otp field on Pro | — |
| Push instead of polling | Signed webhooks on Pro + Webhooks ($19/mo) | Yes |
Resend's details from resend.com/products/inboxes on 31 October 2026 — check there for current plans.
resp=$(curl -s -X POST https://receivemail.dev/mailboxes)
addr=$(echo "$resp" | jq -r .address)
secret=$(echo "$resp" | jq -r .secret)
# ... sign up somewhere with $addr ...
curl -s "https://receivemail.dev/mailboxes/$addr/wait?timeout=25" \
-H "Authorization: Bearer $secret"
More recipes: the CI testing guide and codes without regex or polling.
Only for one job: receiving email in tests. It can't send mail, and its addresses expire after at most 60 minutes (24 h on Pro). For an agent that needs its own long-lived address, use Resend Inboxes.
receivemail.dev has no per-account inbox limit: create a fresh one for every test, up to 20 a minute per IP (the free tier also has a daily limit shared by all users; Pro keys get 120 a minute). Resend's free plan lists up to 3 inboxes and 3,000 emails sent or received.
Not for receivemail.dev: one unauthenticated POST /mailboxes returns an address and a secret. Resend Inboxes is part of a Resend account.