A hosted alternative to MailHog and Mailpit
MailHog and Mailpit are local mail catchers: you run a program (or a container) on your machine, point your app at port 1025, and read mail in a web page on port 8025. They are good tools, and for plain local development they may be all you need. Email Blackhole is the same idea hosted, which changes what you can do.
Differences
| MailHog / Mailpit | Email Blackhole | |
|---|---|---|
| Run it | you install and run it (binary or Docker) | nothing to run; open the page |
| Reachable from | the machine or network it runs on | anywhere: CI runners, staging, a teammate's laptop |
| Real internet mail | only if you expose a port 25 and a domain yourself | built in: a public address that accepts mail from the internet and shows SPF, DKIM and DMARC results |
| Storage | in memory by default (MailHog); Mailpit can persist to a database | free: memory only, 60 minutes; paid: permanent inbox, 30-day retention |
| Tests | HTTP API | HTTP API with a wait-for-email call, webhooks and live events |
| Cost | free; you run it | free sessions; $1.99 a month for a permanent inbox |
When to keep MailHog or Mailpit
- You are offline or want nothing leaving your machine.
- You send large volumes or need your own retention rules, since a hosted free session is limited (30 messages an hour, 2 MB each).
- You want Mailpit's extras, such as HTML and CSS compatibility checks, link checking, SpamAssassin scoring or relaying messages on, which Email Blackhole does not offer.
- Policy forbids a third-party service for test data.
When Email Blackhole fits better
- CI: a pipeline can use it without starting a service container, and the same inbox is reachable from the app under test and from the test runner.
- Staging and real providers: send from SendGrid, SES or Mailgun to the public address and see whether the mail authenticates, which a local catcher cannot show without extra setup.
- A team that does not want everyone to run the same container.
Switching
Your app only needs different SMTP settings. Press Copy as .env in the sandbox and use the SMTP_* values instead of localhost:1025. For tests, replace calls to the local API with the wait call. Complete examples: Playwright, Cypress.
Related: Mailtrap alternative, Limits and plans.