Mailtrap Alternative for Email Testing
Mailtrap sells three products on separate plans: Email Sandbox catches test mail, Email API sends production mail, and Email Marketing sends campaigns. smtp.dev replaces only the sandbox. It never delivers to real recipients, so production email stays with whoever sends it today, Mailtrap included.
The two sandboxes meter different things. Mailtrap counts test emails per month and keeps a fixed number of messages per sandbox. smtp.dev counts domains and accounts, and keeps every message for a set number of days.
At a Glance
| Mailtrap Email Sandbox | smtp.dev | |
|---|---|---|
| Price per month | $0, $17, $42, $123, or $498. Billed yearly: $14, $34, $99, or $399 | $0, $7, or $20 |
| Test emails | 50 a month on Free, then 500, 5,000, 50,000, and unlimited on Enterprise | No monthly quota |
| Messages kept | The newest 10 per sandbox on Free, up to 1,000 on Enterprise | Everything that arrives, for 7, 30, or 90 days by plan, within each account's storage quota |
| SMTP | sandbox.smtp.mailtrap.io with the sandbox's credentials | send.smtp.dev with an account's address and password |
| Receiving from outside | From Basic: one address per sandbox at inbox.mailtrap.io, with + tags | Addresses on your domain, once its MX points at mx.smtp.dev. Every plan |
| Reading mail | Web UI, REST API with official SDKs, POP3 | Web UI, REST API, SSE, IMAP, POP3 |
| Checks on a message | HTML check, SpamAssassin score, bounce emulation. Client previews are an add-on | SPF, DKIM, and DMARC results, and an audit of HTML, links, images, and content |
| Users | 1 on Free, 3 on Basic, up to unlimited on Enterprise. SSO on Enterprise | Single user |
Stay on Mailtrap When
- Production mail goes through Mailtrap's Email API, and you want test mail in the same dashboard.
- You rely on the HTML check, the spam score, bounce emulation, or client previews. The audit here checks sender configuration, HTML structure, links, and images. It doesn't render the message in Gmail or Outlook.
- Several people need their own login, or you need SSO.
- Your tests use Mailtrap's SDKs and pass. Porting tests that already work adds cost and no coverage.
Reasons to Switch
- Receiving on the free plan. Mailtrap's Free sandbox has no inbound address. Lite receives on your domain as soon as its MX record resolves, so an OTP from your auth provider or a receipt from your payment provider lands in a real account.
- Your own domain. Test users can be
jane@test.example.comandsam@test.example.com, each with its own inbox, instead of+tags on one sandbox address.example.comkeeps its production MX. - No monthly count. Basic's 500 test emails last 25 runs of a suite that sends 20. Plans here don't count messages.
- Retention by date. A Free sandbox keeps the newest 10 messages and Basic the newest 50, deleting older ones as new mail arrives. Here, last night's failed run is still there in the morning.
- IMAP. Every account is an IMAP and POP3 mailbox on every plan, so a test message opens in Thunderbird or Apple Mail.
Moving a Test Suite
Add a test domain such as test.example.com and point its MX record at mx.smtp.dev (how). Create an account for each address your tests use. Tests that relied on + tags keep them: qa+run42@test.example.com delivers to qa@test.example.com on every plan. On Pro and Max, a catch-all accepts any address.
Then change the app's SMTP settings:
| Setting | Mailtrap Email Sandbox | smtp.dev |
|---|---|---|
| Host | sandbox.smtp.mailtrap.io | send.smtp.dev |
| Port | 25, 465, 587, or 2525 | 587, STARTTLS |
| Username | The sandbox's SMTP username | The sending account's address |
| Password | The sandbox's SMTP password | That account's password |
send.smtp.dev delivers only to accounts in your sandbox and refuses any other recipient. Fixtures that mail user@example.com fail until they use addresses on your test domain.
If the app sends through a real provider to an inbox.mailtrap.io address, leave its SMTP settings alone and change the recipient instead.
Tests that fetch a message from a Mailtrap sandbox fetch it from the account's INBOX, newest first:
curl "https://api.smtp.dev/accounts/{accountId}/mailboxes/{mailboxId}/messages" \
-H "X-API-KEY: $SMTP_DEV_API_KEY"
The API quickstart has a wait-and-assert helper, and the Playwright and Cypress guides use it in browser tests.
Size Limits
Why a 25 MB limit fits about 18 MB of attachments, the limits Gmail, Microsoft 365, SES, SendGrid, Mailgun, and Postmark publish, and how to test the boundary.
Mailosaur
Mailosaur and smtp.dev side by side for email tests: plans, quotas, custom domains, and IMAP. When SMS keeps you on Mailosaur, and how to port your tests.