Email Testing for Developers

Test emails like you debug code. SMTP in, IMAP/API out. Inspect headers, MIME, and raw source. Nothing leaves the sandbox.

SMTP, IMAP, POP3

Any mail client or library connects with its standard settings. No SDK to install.
  • Quick setup
    Point an MX record and the domain receives real email from any service.
  • REST API
    Accounts, messages, domains, tokens. Everything in the UI has an endpoint.
  • Message inspection
    Headers, the MIME tree, and the raw RFC 5322 source of every message.
SMTP, IMAP, and POP3 protocol support

Inspect received email

Check what arrived in the UI or wire it into CI.
  • Delivery checks
    HTML preview, plain text, headers, and raw source. SPF, DKIM, and DMARC results come over the API.
  • CI-ready
    Any CI that can send over SMTP works, including GitHub Actions, Jenkins, and GitLab CI.
  • Deliverability audit
    Sender config, HTML structure, links, and the content patterns spam filters flag. Grouped by severity.
Email message preview with headers, HTML, and raw source

Send, read, assert

Your app sends over SMTP. Your test reads the result over the API. The whole loop fits on one screen.
# create an inbox
curl -X POST https://api.smtp.dev/accounts \
  -H "X-API-KEY: $SMTP_DEV_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address": "qa@example.com", "password": "use-a-secret"}'

# your app sends to it, then read what arrived
curl "https://api.smtp.dev/accounts/$ACCOUNT/mailboxes/$INBOX/messages" \
  -H "X-API-KEY: $SMTP_DEV_API_KEY"

Testing guides

SMTP tests
Send with swaks, curl, or your app's mailer. Read the raw source back.
API tests
Create an inbox per test over REST, then assert on the message as JSON.
CI assertions
Send from the test suite, poll the API, and assert on subject and body.
E2E flows
The Playwright test clicks the real reset link from the real email.
Cypress specs
A task waits for the email in Node. The spec types the code it carried.
SPF, DKIM, DMARC
Authentication verdicts from staging before you touch production DNS.
QA signups
A catch-all account hands every test run a fresh address on your domain.
Client previews
The same message in Thunderbird and Apple Mail, over plain IMAP.
AI agents
Agents read OTP codes and confirmation links over the API.
OTP & magic links
Read the code from the real email. Check that a resend cancels the old one.
Nodemailer
Send through a real SMTP server from a Node test. Assert on links, headers, and attachments.
Attachment limits
Why a 25 MB limit fits about 18 MB of files, and how to test the edge.

Features

Custom Domains
Bring your own domains and subdomains. One MX record each.
Disposable Accounts
Create an address per test run over the API. Delete it after.
Unlimited Messages
No daily caps and no metering on any plan.
Sandboxed
Receives real email from any service. Sends only within the sandbox.
SPF, DKIM, DMARC
Checked on every inbound message. Results in the UI and the API.
Retention Timers
Messages kept for your plan's window, up to 90 days. Per-message expiry for shorter.
REST API
Domains, accounts, mailboxes, messages, tokens. OpenAPI spec included.
Real-time Updates
New messages pushed via SSE. No polling.
Catch-All & Aliasing
Wildcard accounts and plus-sign addressing. Capture everything or route by tag.

FAQ

Start testing

Sign up, add a domain, receive your first test email.