| 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 |
| 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.
Mailinator has been the go-to
throwaway inbox for well over a decade. The free version is genuinely useful for
a quick manual check: type any name @mailinator.com, open the public
inbox, read the email. For automated tests and for anything you'd rather not have
strangers see, though, two things get in the way — the free inboxes are
public and world-readable, and programmatic/API access plus
private domains need Verified Pro (free, on approval) or a paid plan.
receivemail.dev covers the same "read a verification email in a test" job, but every address is private to whoever created it (reads are gated by a per-mailbox secret returned at creation), and API access is the only interface — there's nothing to log into, and the free tier costs nothing.
| receivemail.dev | Mailinator Public (free) | Mailinator Verified Pro / Business | |
|---|---|---|---|
| Price | Free; Pro $7/mo | Free | Verified Pro $0 on approval; Business $79/mo billed yearly |
| Signup / account | None | None | Required |
| Inbox privacy | Private — secret required to read | Public — anyone who guesses the name reads it | Private domain |
| API to read messages | Yes | No (web UI only) | Yes |
| Private / custom domain | No (shared domain, unguessable address) | No | Yes (1 on Verified Pro) |
| Retention | Up to 60 min free, 24 h on Pro | Temporary | Permanent storage (10 MB on Verified Pro) |
| Send email | No | No | No |
| Good for | Automated tests, CI, throwaway checks | One-off manual checks | QA teams needing a private shared domain |
Mailinator's plan names and prices change — see mailinator.com/pricing for the current numbers.
@mailinator.com can see the verification codes
your test triggers — and, if your signup flow leaks anything else (names,
reset links), that too.mailinator.com outright at signup
because it's so well known.receivemail.dev hands you a random address on a less-burned domain and only the holder of the creation secret can read it.
# was: hit https://api.mailinator.com/... with an API token resp=$(curl -s -X POST https://receivemail.dev/mailboxes) addr=$(echo "$resp" | jq -r .address) secret=$(echo "$resp" | jq -r .secret) # ... run your signup against $addr ... curl -s "https://receivemail.dev/mailboxes/$addr/messages" \ -H "Authorization: Bearer $secret"
Full shell + Playwright walkthrough: the CI testing guide.
No. On the free Public plan any inbox can be opened by anyone who types its name, and API access isn't included. Private inboxes come with Verified Pro (free, on approval) or the paid Business plan.
receivemail.dev: one unauthenticated POST /mailboxes returns a random address plus a secret, and only that secret can read the mail. mail.tm works similarly with an address and password.
It's one of the best-known disposable domains, so many signup forms block it. A less-known domain is less likely to be blocked, though no disposable domain is guaranteed to pass every filter.