Email Testing

The best email testing tools, and which one your test suite actually needs

Mailpit, Ethereal, Mailtrap, Mailosaur, MailSlurp, Litmus and InboxDome do three different jobs. Pick the job first, then the tool, and know where each one stops.

On this page
  1. The three jobs hiding behind one phrase
  2. Catchers you run yourself: Mailpit and Ethereal
  3. Hosted sandboxes: Mailtrap
  4. Real receiving inboxes: Mailosaur, MailSlurp and InboxDome
  5. Rendering and spam preview: Litmus
  6. Where InboxDome is the wrong choice
  7. Choosing in one pass

The best email testing tools fall into three groups, and choosing from the wrong group is how teams end up with a green suite and broken mail. Catchers like Mailpit and Ethereal intercept what your application tried to send. Hosted sandboxes like Mailtrap do the same off your machine, with spam scoring and HTML checks on top. Real receiving inboxes like Mailosaur, MailSlurp and InboxDome accept the message over the public internet, which is the only way to learn whether it actually arrived. Decide which question you need answered, then pick inside that group.

The three jobs hiding behind one phrase

Roundups of the best email testing tools tend to blur these together. Ask five developers what email testing means and you get three different answers:

  1. Did my code build and attempt the right message? Subject, body, recipients, template variables. This is a unit-level question.
  2. Did the message reach a mailbox, and did it authenticate? This is an integration question, and it involves DNS, your sending provider and a receiver.
  3. Does it look right in Outlook, Gmail and on a phone? This is a rendering question, and mostly a marketing concern.

The second one is where the expensive failures live, because it is the only one that can go wrong while nobody changes any code. RFC 7489 puts DMARC evaluation on the receiving server, which compares the From domain against the SPF and DKIM results it computed itself. That single fact decides most of this roundup: a tool that never receives a message cannot tell you anything about authentication.

Catchers you run yourself: Mailpit and Ethereal

Mailpit is the sensible default for local development. It is open source and self-hosted, and describes itself as a small, fast, zero-dependency email testing tool and API. It acts as an SMTP server, stores everything your app sends, and gives you a web UI plus a REST API for integration tests. It also ships an HTML compatibility checker, a link checker and SpamAssassin scoring.

Ethereal Email is the zero-install version of the same idea: a free hosted fake SMTP service where, in its own words, messages never get delivered. You generate throwaway SMTP credentials, point your app at them, and read the result at a preview URL.

The strengths are real. Both are fast, cost nothing, keep test data on infrastructure you control, and work when the network does not. If your compliance rules say test mail cannot leave your estate, this group is the correct answer and no hosted service qualifies.

The limit is structural. Nothing is delivered, so nothing is proven about delivery.

Hosted sandboxes: Mailtrap

Mailtrap’s Email Sandbox captures SMTP traffic from staging and development environments, and states plainly that it is not designed to deliver email to real addresses. On top of capture it scores content for spam, validates HTML and CSS, and exposes an API for automating test flows.

That is genuinely useful for a team: one shared place to see what staging sent, template regressions caught early, and no risk of a test blast reaching a real customer.

It is still a sandbox. The message stops there, so the delivery path and the authentication result stay untested.

Real receiving inboxes: Mailosaur, MailSlurp and InboxDome

This group creates addresses on live MX records, so your mail crosses DNS, TLS and a real SMTP conversation with a server you do not own.

Mailosaur provides virtual inboxes and phone numbers, covering email, SMS and TOTP, with SDKs across many languages and integrations for Playwright, Cypress and Selenium. If one signup flow sends an email and then texts a code, Mailosaur handles both halves in one tool.

MailSlurp creates real inboxes and phone numbers from an API, routes inbound mail, and supports webhooks, forwarding and auto-replies. It is the broadest of the three, and it can send as well as receive.

InboxDome is deliberately narrower. It is receive-only, so an address cannot send anything, ever. You create an inbox in one call, trigger your flow, then block until the mail lands:

curl -X POST https://inboxdome.com/v1/inboxes \
  -H "Authorization: Bearer $INBOXDOME_KEY"

curl "https://inboxdome.com/v1/inboxes/$INBOX_ID/wait?for=otp&timeoutSeconds=30" \
  -H "Authorization: Bearer $INBOXDOME_KEY"

Because InboxDome is the receiving server, the assertions include auth checks for spf, dkim and dmarc alongside containsText, otpPresent and linkResponds. Signed webhooks push new mail to you, there are SDKs and a GitHub Action, and the free tier is 100 inbox tests a month with no credit card. There is also an MCP server with seven tools, so a coding agent can create an inbox and read the mail it caused. The detail lives on the Email Testing API page and in the API reference.

Rendering and spam preview: Litmus

Litmus answers job three and nothing else. It previews a message across more than 100 email clients, runs QA checks on links, images and accessibility, scans against more than 25 spam filters, and monitors for client changes that break a template later.

No API in the group above replaces that, and Litmus does not replace them either. If email is a marketing channel for you, you probably need one tool from each group.

Where InboxDome is the wrong choice

Better said here than discovered mid-integration:

  • Your CI is air-gapped. If the build machine cannot reach the internet, self-host a catcher.
  • You need to send mail. Receive-only is permanent. Sending is your provider’s job, and the sending APIs worth shortlisting are compared separately.
  • Test data must stay on your own infrastructure. Then no hosted receiver qualifies, ours included.
  • You need SMS or phone OTP. We do not do it. Mailosaur and MailSlurp do.
  • You need messages for weeks. Consumer inboxes hold mail for 24 hours by default, and for at most 7 days.
  • You want pixel-perfect rendering across clients. Use a preview tool.

Choosing in one pass

The best email testing tools are the ones that answer the question you actually have, so work down this list and stop at the first match. Mail must never leave your network: Mailpit. You want a message viewer with no setup at all: Ethereal. You want a shared team sandbox with spam and HTML analysis: Mailtrap. Your flow spans email and SMS: Mailosaur or MailSlurp. You need to prove delivery and authentication from CI, with one isolated inbox per test: InboxDome. You ship marketing campaigns: add Litmus regardless of the above.

Most teams settle on two tools, one local and one that really receives. The comparison of approaches goes deeper on why, and testing email webhooks safely covers the piece people wire up last.

Disclosure: InboxDome publishes this blog and makes the products it mentions. We describe what they do rather than promise results.

Key takeaways

  • Email testing splits into three jobs: what your app tried to send, what actually arrived, and how it renders. Most bad tool choices answer the wrong one.
  • Mailpit and Ethereal are the fastest way to inspect a message locally, and the right answer when test mail must never leave your network.
  • SPF, DKIM and DMARC are evaluated by the receiving server, so no local catcher or hosted sandbox can report them.
  • Mailosaur and MailSlurp both cover email plus SMS. InboxDome does not do SMS at all, so if your flow spans both, use one of them.
  • InboxDome is receive-only by design, with short retention, so it is the wrong tool for sending, for air-gapped CI, or for mail you need to keep for weeks.

Sources

  1. Mailpit, self-hosted email testing tool and API — Open source SMTP capture with a web UI, REST API, HTML compatibility checker and SpamAssassin integration.
  2. Mailtrap Email Sandbox — Captures SMTP traffic from staging and dev, and states it is not designed to deliver to real addresses.
  3. Mailosaur documentation — Virtual inboxes and phone numbers for email, SMS and TOTP testing, with SDKs across several languages.
  4. RFC 7489: DMARC — Defines DMARC as a receiver-side check comparing the From domain against SPF and DKIM results.

Links last checked August 26, 2026.

Frequently asked questions

What is the difference between an SMTP catcher and a real test inbox?

A catcher pretends to be your outbound mail server and stores whatever your app hands it, so nothing crosses the internet. A real test inbox is an address on a live MX record, so the message travels the same path it would take to a customer and the receiving server records the authentication results.

Can I test SPF, DKIM and DMARC with a local tool?

No. RFC 7489 puts DMARC evaluation on the receiver, which compares the From domain against the SPF and DKIM results it computed itself. A component that never receives a message over the network has nothing to evaluate, so it cannot report a pass or a fail.

Do I still need a rendering tool if I use a testing API?

If email is a marketing channel for you, yes. An API tells you the message arrived and contains the right code or link. It does not tell you the layout survives Outlook. Preview tools such as Litmus exist for that job, and an API does not replace them.

Which tool should I start with for CI?

Start with whichever question keeps failing you. If templates break, a catcher or a sandbox is enough. If mail silently stops reaching users after a DNS change or a provider migration, you need a real receiving inbox with authentication assertions.

InboxDome TeamEmail infrastructure builders

The InboxDome team runs the temporary-email service and email-testing API this blog belongs to. We write about disposable inboxes, email privacy and testing transactional email, based on operating the infrastructure ourselves.