Test inboxes for the email your application sends.
Each mailbox is a catchall subdomain. Point your app at it, then read what arrived from the web UI, the REST API, an SDK, or a real IMAP client.
Free for one mailbox. No credit card.
alice@acme-ci.mailcatchr.com
One subdomain per mailboxCreate a mailbox and it has its own address space immediately. No DNS, no SMTP server to run.
Sent as in productionYour app sends real mail over SMTP. mailcatchr receives it and stores the text, HTML, headers and attachments.
Read it back from your suiteWait for the message over the REST API or an SDK, fetch it over IMAP, or have a webhook push it to you.
What it does
Catchall inboxes
Every mailbox is a subdomain. Any address on it receives mail, so each test can use a fresh address with no setup.
Real mail protocols
Inbound arrives over SMTP. Read it back over POP3 or IMAP with per-mailbox credentials, so real mail clients can be tested.
REST API and SDKs
Scoped API keys, a long-poll endpoint that waits for a matching message, and SDKs for TypeScript and C#.
Webhooks
A signed callback is sent when a message lands, so a pipeline can react without polling.
2FA and TOTP
Store TOTP authenticators in the workspace and fetch the current code over the API to complete two-factor logins in tests.
Teams
Business includes up to 250 members with Owner, Admin and Member roles, and SAML SSO. No per-seat pricing.
How it works
Create a mailbox
It gets its own subdomain immediately. Anything sent to *@acme-ci.mailcatchr.com lands in it.
Point your app at it
Sign test users up with addresses on that subdomain. Your app sends mail exactly as it does in production.
Read it from your tests
Long-poll for the message, read the body, or pull the 2FA code. From the SDK, the REST API, or an IMAP client.
Show code samples C#, TypeScript and curl
// Wait for the password-reset email, then assert on it.
var msg = await mc.AwaitMessageAsync(
mailboxId,
to: "alice@acme-ci.mailcatchr.com",
subject: "Reset your password",
timeout: TimeSpan.FromSeconds(30));
msg.Should().NotBeNull();
msg!.Subject.Should().Be("Reset your password");
// Read the full body when you need the link inside it.
var detail = await mc.GetMessageAsync(mailboxId, msg.Id);
detail.TextBody.Should().Contain("/reset?token=");
import { createClient } from "@mailcatchr/sdk";
const mc = createClient({ apiKey: process.env.MC_KEY! });
// Need a 2FA code mid-test? Read it from a stored authenticator.
const totp = await mc.totps.code(authenticatorId);
await page.fill('input[name="otp"]', totp.code);
// Send from a verified identity to an address you control.
await mc.send(mailboxId, {
from: "noreply@acme.send.mailcatchr.com",
to: "qa@acme-ci.mailcatchr.com",
subject: "Welcome",
textBody: "Hi there",
});
# Long-poll until a matching message lands (204 on timeout).
curl -H "Authorization: Bearer $MC_KEY" \
"https://api.mailcatchr.com/v1/mailboxes/$MAILBOX/messages/await?to=alice@acme-ci.mailcatchr.com&subject_contains=Reset&timeout_seconds=30"
# Current code from a stored TOTP authenticator.
curl -H "Authorization: Bearer $MC_KEY" \
"https://api.mailcatchr.com/v1/totp/$TOTP_ID/code"
Pricing
Two plans, no per-seat pricing. Outbound sending is pay-as-you-go on both: $0.50 per 1,000 emails from a prepaid wallet.
Free
$0
No credit card
One mailbox with the full API, SDK, webhooks and POP3/IMAP.
- 1 mailbox (catchall subdomain)
- 100 inbound emails per day
- 3-day retention, 500 MB storage
- 1 team member, 1 webhook endpoint
- 5 API keys, 1 TOTP authenticator
Business
$29per month
Billed monthly
Everything in Free, for a whole team running real suites.
- Unlimited mailboxes
- 10,000 inbound emails per day
- Retention up to 30 days, 50 GB storage
- Up to 250 team members, 50 webhook endpoints
- 100 API keys, 50 TOTP authenticators
- SAML SSO
Prices in USD, excluding taxes. Need bigger limits, longer retention or custom terms? Contact sales.
Questions
Do I need a credit card for the free tier?
No. Free gives you one catchall mailbox, 100 emails a day, and full API and SDK access, with no card on file.
How does outbound sending work?
You top up a prepaid wallet and sends are debited at $0.50 per 1,000 emails. Recipients are restricted to addresses you control, so a test suite can't email real users by mistake.
What happens to my test data?
Messages are deleted after the mailbox's retention window, attachments included: 3 days on Free, up to 30 days on Business, longer on custom plans. You can export or delete the whole workspace at any time.
Can my whole team use one account?
Yes. Business includes up to 250 members with Owner, Admin and Member roles at no per-seat cost, and the workspace can be switched to SAML SSO with your identity provider.
Can I cancel any time?
Yes, from workspace settings. Business continues to the end of the period you've paid for, then the workspace drops to Free. Your data is kept.
Create a free account and send your first test email in a few minutes.
Create a free account