MailCatcher
Tiny Ruby-based local SMTP catcher.
MailCatcher is a Ruby gem that runs a local SMTP server on port 1025 and a web UI on 1080. It is common in Rails projects and shows the HTML, plain-text, and raw-source version of each captured message. Development is slow, so Mailpit is usually the stronger default today.
An agent stack treats email as a two-way primitive. Inbound has to arrive as structured JSON a tool call can consume, sends have to be safe to retry when a model loop repeats itself, and every action needs an audit trail. A provider without inbound parsing only solves half the problem.
Against inbound parsing into tool calls and model-generated sends that must not duplicate, MailCatcher covers none of the capabilities this audience leans on (inbound parsing, idempotency keys, webhook coverage, event stream, batch sending, SDK breadth, and multi-tenant support), so it fits only where those needs are genuinely absent.
- Inbound parsing: No
- Idempotency keys: No
- Webhooks: No
- Operating since: Not published
- Event stream: No
- Best published rate per 1,000: Tiers not published in comparable form
- Batch sending: No
- SDKs: None
- Multi-tenant: No
Not applicable.
Rails teams already running it in development.
Non-Ruby projects, which get a lighter setup from Mailpit.
- › Installs as a Ruby gem, familiar in Rails stacks
- › SMTP on 1025 with a web UI and JSON API on 1080
- › Shows HTML, plain text, and raw source per message
- › Release cadence is slow with little active feature work
- › Needs a Ruby runtime where Mailpit ships a static binary
- › HTML rendering trails newer catchers
Features at a glance
| API | Yes |
| SMTP | Yes |
| SDKs | None |
| Webhooks | No |
| Templates | none |
| React Email | No |
| Batch send | No |
| Scheduled send | No |
| Suppressions | No |
| Multi-tenant | No |
| Inbound parsing | No |
| Event stream | No |
| Idempotency keys | No |
| Dedicated IP | No |