Email testing for developers Coming soon
Look closer.Before you send.
Mailtarn will catch every email your app sends from dev, staging and CI, so you can inspect it safely before it reaches a real inbox.
Product preview
PreviewIllustrative mockup. Features and interface may change.
+ 2 more messages
Reset your password
Reset your password
We received a request to reset the password for the Acme account linked to dev+qa1@example.com.
If you didn't ask for this, you can ignore this email. Your password won't change.
Choose a new passwordAcme Inc. · This link expires in 30 minutes.
Reset your password We received a request to reset the password for the Acme account linked to dev+qa1@example.com. If you didn't ask for this, you can ignore this email. Your password won't change. Choose a new password: https://staging.acme.test/reset?token=EXAMPLE Acme Inc. · This link expires in 30 minutes.
| Date | Wed, 28 Oct 2026 10:42:07 +0530 |
|---|---|
| From | Acme Security <security@acme.test> |
| To | dev+qa1@example.com |
| Subject | Reset your password |
| Message-ID | <reset.8f3a21c4@acme.test> |
| MIME-Version | 1.0 |
| Content-Type | multipart/alternative; boundary="acme-b1" |
| X-Acme-Env | staging |
Welcome to Acme
Welcome to Acme, Priya
Thanks for signing up. Confirm your email address to finish setting up your account and invite your team.
This link expires in 24 hours. If you didn't create an account, you can ignore this email.
Confirm email addressAcme Inc. · Sent to priya@example.com because an account was created with this address.
Welcome to Acme, Priya Thanks for signing up. Confirm your email address to finish setting up your account and invite your team. This link expires in 24 hours. If you didn't create an account, you can ignore this email. Confirm email address: https://staging.acme.test/confirm?token=EXAMPLE Acme Inc. · Sent to priya@example.com because an account was created with this address.
| Date | Wed, 28 Oct 2026 10:38:12 +0530 |
|---|---|
| From | Acme <hello@acme.test> |
| To | priya@example.com |
| Subject | Welcome to Acme |
| Message-ID | <confirm.8f3a21c4@acme.test> |
| MIME-Version | 1.0 |
| Content-Type | multipart/alternative; boundary="acme-b1" |
| X-Acme-Env | staging |
Jordan invited you to the Design workspace
You've been invited
Jordan Lee invited you to join the Design workspace on Acme.
Accept the invitation to see shared projects and comments.
Accept invitationAcme Inc. · Invitations expire after 7 days.
You've been invited Jordan Lee invited you to join the Design workspace on Acme. Accept the invitation to see shared projects and comments. Accept invitation: https://staging.acme.test/invite?token=EXAMPLE Acme Inc. · Invitations expire after 7 days.
| Date | Wed, 28 Oct 2026 10:24:51 +0530 |
|---|---|
| From | Jordan Lee via Acme <notifications@acme.test> |
| To | sam@example.com |
| Subject | Jordan invited you to the Design workspace |
| Message-ID | <invite.8f3a21c4@acme.test> |
| MIME-Version | 1.0 |
| Content-Type | multipart/alternative; boundary="acme-b1" |
| X-Acme-Env | staging |
Your receipt for order #1042
Thanks for your order
Order #1042 · 2 items · Paid with test card ending 4242.
This receipt was sent from Acme's staging environment. No payment was taken.
View receiptAcme Inc. · Keep this email for your records.
Thanks for your order Order #1042 · 2 items · Paid with test card ending 4242. This receipt was sent from Acme's staging environment. No payment was taken. View receipt: https://staging.acme.test/receipt?token=EXAMPLE Acme Inc. · Keep this email for your records.
| Date | Wed, 28 Oct 2026 09:41:30 +0530 |
|---|---|
| From | Acme Billing <billing@acme.test> |
| To | priya@example.com |
| Subject | Your receipt for order #1042 |
| Message-ID | <receipt.8f3a21c4@acme.test> |
| MIME-Version | 1.0 |
| Content-Type | multipart/alternative; boundary="acme-b1" |
| X-Acme-Env | staging |
Your weekly summary
Your week on Acme
3 new comments on Q4 launch checklist.
1 task due Friday: Review onboarding copy.
Open AcmeAcme Inc. · You can change digest settings in your account.
Your week on Acme 3 new comments on Q4 launch checklist. 1 task due Friday: Review onboarding copy. Open Acme: https://staging.acme.test/digest?token=EXAMPLE Acme Inc. · You can change digest settings in your account.
| Date | Tue, 27 Oct 2026 18:00:00 +0530 |
|---|---|
| From | Acme <digest@acme.test> |
| To | qa-team@example.com |
| Subject | Your weekly summary |
| Message-ID | <digest.8f3a21c4@acme.test> |
| MIME-Version | 1.0 |
| Content-Type | multipart/alternative; boundary="acme-b1" |
| X-Acme-Env | staging |
How it will work
A simpler testing workflow
- 01
Connect your test environment.
Point your app's development or staging mail settings at a Mailtarn inbox instead of a real provider.
SMTP · PlannedAPI · Planned# .env.staging — values issued per inbox SMTP_HOST=smtp.mailtarn.com SMTP_PORT=587 # or 465 for implicit TLS SMTP_USER=<inbox credential> SMTP_PASS=<inbox credential>
- 02
Trigger your application's email flow.
Sign up a test user, request a password reset, run your end-to-end suite. Your app sends exactly as it normally would.
# your app, your usual flow $ curl -X POST localhost:3000/api/signup \ -d email=priya@example.com - 03
Inspect the captured message.
The email lands in your Mailtarn inbox, not a customer's. Check the rendered HTML, the plain-text part and the headers.
New message: Welcome to Acmejust now
Features · In development
What's in the first release
Mailtarn isn't available yet. This is what we're building for early access.
Catch every message
Standard SMTP on ports 587 and 465. A message is confirmed only after it's safely stored, so nothing goes missing.
Inspect it properly
Rendered HTML, the plain-text part, every header, the raw source and attachments, exactly as your app sent them.
Safe rendering
Email HTML is shown from a separate, sandboxed domain with short-lived links. It never runs on the app's own domain.
Credentials per inbox
Keep dev, staging and CI apart, each with its own SMTP login. Rotate a password without breaking the pipeline.
Ready for teams
Shared inboxes, roles and two-factor sign-in. No mail server for anyone to run or maintain.
Fair pricing
A permanent free plan, and team plans priced for small teams, in USD or INR.
Pricing
A free place to start.
Every account starts on a free plan that never expires. No credit card needed. Paid plans add more inboxes, team seats and longer retention, priced in USD or INR.
- Free plan
- Included · forever
- Credit card
- Not required
- Paid plans
- USD or INR
Plan limits and prices will be announced before signup opens.
Be there for the first send.
Get notified when Mailtarn opens for early access.
You're on the list.
We'll email when early access opens.