Ethereal for your laptop. Mailloop for CI.
Ethereal is the quickest way to see what your Node app sent. When a test has to check the email, a teammate has to open it or an agent has to read it, point the transport at a Mailloop sandbox.
- 500 emails a month, no card
- EU-hosted
- Plain SMTP, any language
- Nodemailer Same transport, same send calls
- Port 587 works as before
- Local dev Ethereal can stay on your laptop
- how a test reads the email
- API vs IMAP
- how a teammate opens it
- Team vs link
- messages an hour
- No cap vs 200/h
- for your coding agent
- MCP vs none
Where a throwaway inbox runs out
Four moments where Ethereal stops fitting. Each one is a single change on the Mailloop side.
A test has to check the email
Ethereal has no REST API, so a test that needs the password reset link logs in over IMAP, searches, downloads the raw message and parses it. With Mailloop the test asks for the email and gets it parsed.
const email = await client.emails.waitFor(sandboxId, {
subject: 'Reset your password',
});
expect(email.html).toContain('/reset?token='); CI runs in parallel
A public Ethereal account takes 200 messages an hour, then rejects the next one until the hour turns over. Mailloop counts volume by the month, and every job can get its own temporary sandbox.
Someone else needs to see it
An Ethereal message is shared by pasting its preview URL, and a few hours later it is gone. A Mailloop sandbox is a shared inbox the whole team opens, a week later if they need to. Free has 1 user, Basic 5.
An agent is doing the testing
A coding agent that just changed the signup flow should check the email it sends. Mailloop's MCP server lets Claude Code, Cursor, claude.ai or ChatGPT create a sandbox, call wait_for_email, follow the links and screenshot the message, signed in with OAuth.
Check the password reset email after my change.
The reset link points at staging and the button renders in Gmail.
When do you need an Ethereal alternative?
When a message has to outlive a few hours, be seen by someone else, or be checked by an automated test. Ethereal is free and needs no signup, but it deletes mail after a few hours, has no API besides IMAP, caps public accounts at 200 messages an hour and shares messages as public links.
Ethereal vs Mailloop
| | Ethereal | |
|---|---|---|
| Getting started | ||
| Cost | Yes: Free for 500 emails a month, then from $12/mo | Yes: Free |
| Signup | Partly: An account, no credit card | Yes: None, createTestAccount() |
| Keeping and sharing mail | ||
| How long mail stays | Yes: Until you delete it, up to 200 per sandbox on Free | No: A few hours, then deleted |
| Rate limit | Yes: Monthly volume, no hourly cap | Partly: 200 messages an hour per account |
| Sharing a message | Yes: Shared inbox for your organization | Partly: Public preview link |
| Tests and agents | ||
| API | Yes: REST API and @mailloop/sdk | Partly: IMAP and POP3 only |
| Wait for an email in a test | Yes: waitFor, held on the server | No: Search over IMAP in a loop |
| Inbound address | Yes: Every sandbox, every plan | No: Disabled on public accounts |
| Screenshots in email clients | Yes: Gmail, Outlook, Apple Mail and more | No: HTML preview in your browser |
| Webhooks | Yes: From Basic | No: None |
| MCP server for agents | Yes: Hosted, OAuth | No: None |
Ethereal facts checked on September 24, 2026 against ethereal.email, its FAQ and help pages. Mailloop numbers come from our pricing page.
Seen something inaccurate? Tell usUse both.
The transport at the top of this page is the whole setup. In development it asks Ethereal for a fresh account, so nobody needs credentials to run the app. Everywhere else it uses a Mailloop sandbox from the environment, which is where tests assert, reviewers look and agents read. Both sides are plain SMTP.
Ethereal, when
- You are debugging on your own machine and want zero setup
- A quick script needs to prove an email went out
- Nobody else needs to see the message tomorrow
Mailloop, when
- A test in CI has to find the email and check its links or codes
- Teammates or reviewers need to open the same message
- Parallel jobs send more than 200 emails an hour
- A coding agent should verify the emails it changes
Ethereal and Mailloop, common questions
Weighing the hosted options? Mailloop vs Mailtrap covers price, limits and the agent setup, and the fake SMTP server guide explains how capture works if you would rather self-host Mailpit.
Why do my Ethereal messages disappear?
Are Ethereal preview links private?
Does nodemailer.createTestAccount() work with Mailloop?
Is Ethereal still maintained?
Do I need Node.js to use Mailloop?
Last updated