How to test email sending without sending anything (SMTP sandbox setup)
Set up an SMTP sandbox in four steps and assert on the real message in CI: Laravel, Django, Node and shell examples, plus the details that break in production.
Catch messages sent over SMTP and inspect any HTTP request in real time. Perfect for staging and local development: no real inboxes, no surprises for your customers.
Three steps from your application to the sandbox.
Sign up and generate SMTP credentials for an inbox, or a catch-all URL for webhooks.
Put the host, port, username and password into your application, or send an HTTP request to the webhook URL.
Emails and requests appear instantly with full headers, body, attachments and metadata.
Everything you need to test mail and integrations safely.
Point any SMTP client at it. Messages are parsed and stored — HTML, text, headers and attachments.
One URL that accepts any method and content type, capturing method, URL, headers, body, IP and time.
Share results with a link that can expire and can be revoked instantly.
Find messages by sender, recipient or subject, and requests by method, URL or body.
Lists refresh themselves, so new emails and requests show up without reloading.
Captured data is deleted automatically after a configurable retention window.
English and Russian interface, switchable any time from the header or your profile.
All timestamps are shown in the timezone of the visitor, automatically detected.
See the exact request your provider sends: query string, headers, JSON body and the originating IP. Then delete it, search it or share it.
Step-by-step articles: set up an email sandbox, debug webhooks and keep your test data private.
Set up an SMTP sandbox in four steps and assert on the real message in CI: Laravel, Django, Node and shell examples, plus the details that break in production.
Four ways to test webhooks locally, compared: a stable catch-all URL, a tunnel, provider replay and a local catcher — plus how to inspect the request and verify its signature.
What to use instead of Mailtrap: Mailpit, smtp4dev and the unmaintained MailHog compared with a privately hosted sandbox, plus a ten-minute migration checklist.
Stop pasting screenshots into a chat: the same read-only share link answers as JSON or plain text, so a model can check the subject, headers, links and body of every captured email.
MailHog has not been maintained for years. What replaced it (Mailpit, smtp4dev, a hosted private sandbox), how to migrate in five minutes and what you gain or lose.
Mailpit you run yourself, MailHog is the tool it replaced, Mailtrap is a service you pay for — compared on maintenance, cost, where the mail lives and team features.
What mailtrap.io actually is, what its metered free tier limits, what the searches "mail trap", "trap email" and "mailtrap login" mean — and the free alternatives, this instance included.
A Mailpit service for your compose file: ports, a data volume so captured mail survives restarts, the application configs that go with it, a healthcheck for CI and the mistakes that matter.
Mail::fake() proves the code asked to send; a real SMTP sandbox proves the message is right. Both setups, the assertion styles, the queue trap and the mistakes that let a broken email ship.
What to look for when the captured payloads are real: revocation, noindex, history, read-only sharing and machine-readable exports — and how this instance answers each point.
Correct. The SMTP server only accepts the message, stores it and shows it in your dashboard. It never relays or delivers mail to a real mailbox — any recipient address is accepted and discarded.
You get a unique URL. Any HTTP request sent to it (GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD) is captured with its method, path, query string, headers, body, IP and time.
Yes. Create a read-only link to an inbox or a webhook, choose how long it stays valid, and revoke access at any time.
Yes — and there is nothing to install on your side. This instance is hosted for you, with no plans, no per-message limits and no third-party analytics or mail vendor in the loop.
No. Every shared link, captured request and app page sends noindex directives, so search engines never store your test data.
Create an inbox, copy the SMTP credentials and stop worrying about accidentally emailing real customers.