MailCatcher heeft Rails goed gediend. En al het andere dan?

MailCatcher is gebouwd voor Rails-ontwikkelaars die een snelle manier nodig hadden om e-mails lokaal te vangen. Het is een Ruby gem, het draait op je machine, en het is al jaren een betrouwbare tool. Maar wanneer je stack verder groeit dan Rails—of je team groeit voorbij één—bereiken lokale tools hun grenzen.

Sendpit is een gehoste SMTP-sandbox die werkt met elke taal. Je hele team ziet dezelfde inbox, e-mails blijven bestaan tussen deploys, en je hebt geen Ruby nodig.

Key Facts

  • SendPit Basic: $5/mo for 3 mailboxes, 1,000 emails/month
  • MailCatcher Zelfgehoste Ruby gem
  • Pricing and features last verified: 2026-03-18

Wat MailCatcher goed doet

Ruby Gem
Snelle Setup
Web UI
Rails-vertrouwd

MailCatcher became a staple in Rails development for good reasons. For a Rails developer, the setup is about as frictionless as it gets: run `gem install mailcatcher`, then `mailcatcher`, and you have an SMTP server on localhost:1025 with a web UI on localhost:1080. Add `config.action_mailer.delivery_method = :smtp` and point it at the right port. That's all there is to it.

The web interface is straightforward and effective. You get three tabs—HTML, Source, and Plain—that let you inspect exactly what your application sent. For Rails developers working alone on a single project, that workflow is hard to beat. No accounts, no configuration files, no internet connection required. It's the kind of tool that does one thing and does it simply.

MailCatcher earned its place in the Rails ecosystem. If you've been using it for years, you know why. It stays out of your way and lets you focus on building your application.

The Ruby installation tax

If your team already works in Ruby, installing MailCatcher is trivial. But for teams that write Python, Go, Java, PHP, or Node.js, the story is different. Installing MailCatcher means installing Ruby first—and Ruby version management is its own ecosystem of complexity.

You need a Ruby version manager like rbenv or rvm, or you rely on your system Ruby—which on macOS is either outdated or no longer included. Each approach has gotchas. rbenv requires Homebrew and shell initialization changes. rvm modifies your shell profile and can conflict with other tools. System Ruby, when available, often lacks permissions to install gems globally without sudo.

Even after Ruby is installed, MailCatcher depends on gems like `thin` and `eventmachine` that compile native C extensions during installation. On macOS Sonoma and Sequoia, this frequently fails. Missing Xcode command line tools, architecture mismatches between Apple Silicon and x86 dependencies, and incompatible OpenSSL versions all create errors that require investigation and workarounds. A new team member on a fresh MacBook can easily spend thirty minutes resolving these issues before catching a single email.

Some teams sidestep this by running MailCatcher inside Docker. That eliminates the Ruby dependency on the host machine, but introduces a different kind of overhead: now you're managing a container, mapping ports, and potentially adding a Docker Compose service just for an email testing tool. It works, but it defeats the simplicity that made MailCatcher appealing in the first place.

There's an irony here. MailCatcher is meant to be a simple, no-fuss tool. But for teams that don't already have Ruby in their toolchain, the installation process can become a yak-shaving exercise—thirty minutes of debugging native extensions and version managers before you can test a password reset email.

Single-threaded by design

CI job 1
CI job 2
CI job 3
1 thread
Queued

Under the hood, MailCatcher relies on EventMachine, a Ruby event loop library that handles both the SMTP server and the web interface. EventMachine itself is largely unmaintained—its last meaningful update was years ago—and it enforces a single-threaded architecture. The SMTP server processes one connection at a time. For a single developer sending occasional test emails, this is invisible. But when multiple services or CI jobs send emails simultaneously, connections queue up or time out.

The web UI runs on `thin`, another aging Ruby web server. It serves static assets from memory, which keeps things lightweight but means no WebSocket support. To see new emails arrive, you have to manually refresh the browser. There's no live-updating inbox, no push notifications, and no way to know an email has landed without checking.

These aren't deal-breakers for local development with light usage. But they become noticeable as usage scales—when your test suite sends dozens of emails per run, when multiple developers share an instance, or when CI pipelines fire concurrent SMTP connections at the same endpoint. The single-threaded model was a reasonable choice for a simple local tool, but it imposes a ceiling on how the tool can be used.

Wanneer lokale tooling een bottleneck wordt

"We hebben een Node service toegevoegd"

MailCatcher is een Ruby gem. Je Go-microservice of Python-worker deelt niet dezelfde toolchain.

"QA kan niet zien wat ik zie"

Je MailCatcher draait op je laptop. De staging-omgeving van QA stuurt e-mails het niets in.

"CI heeft een SMTP-endpoint nodig"

MailCatcher draaien in CI is mogelijk maar onhandig. Ephemere containers bewaren e-mails niet tussen jobs.

"Wordt dit nog onderhouden?"

De updatefrequentie van MailCatcher is vertraagd. Voor sommige teams is dat een afhankelijkheidsrisico.

Zodra je stack services buiten Ruby bevat—of je team mensen bevat die e-mails van staging moeten zien—begint het model van MailCatcher gaten te vertonen. Het was gebouwd voor een eenvoudigere tijd toen één ontwikkelaar één Rails-app draaide.

Een gehoste SMTP-sandbox geeft je dezelfde vang-en-inspecteer workflow, maar zonder de Ruby-afhankelijkheid, zonder de alleen-lokaal beperking, en zonder je zorgen te maken over projectactiviteit.

The Mailpit question

If you're considering alternatives to MailCatcher, you've probably come across Mailpit. It's worth addressing directly: Mailpit solves many of the problems described above. It's a single Go binary with no runtime dependencies—no Ruby, no native extensions, no version manager. The web UI is modern, with full-text search, real-time updates, and responsive previews. It's actively maintained and has become the default in frameworks like Laravel Sail and DDEV.

So why would you consider a hosted service like Sendpit over Mailpit? It comes down to what you need beyond local development. If your team needs shared access to test emails without setting up VPN tunnels or exposing ports, a hosted service handles that out of the box. If you manage multiple projects and want per-project mailbox isolation with separate credentials, that requires running multiple Mailpit instances yourself. If you need user accounts with role-based access controls so contractors see only their project's emails, Mailpit doesn't have that layer.

It doesn't have to be either-or. "Mailpit for local development, Sendpit for shared environments" is a perfectly valid pattern. Many teams use a local tool for the fast feedback loop during development and a hosted service for CI, staging, and team collaboration. The SMTP configuration is the same—just different credentials per environment.

For a deeper comparison of Mailpit and Sendpit, including a feature-by-feature breakdown, see our dedicated Mailpit comparison page.

Ruby gem vs. gehoste service

MailCatcher 5 modules
Ruby gem
Lokale SMTP
Enkele inbox
Geen teamtoegang
Geen omgevingsscheiding

Designed for its specific use case.

Sendpit 5 modules
Elke taal
Gehoste SMTP
Gedeelde inbox
E-mail bewaring
Teamtoegang

Hosted SMTP sandbox for teams.

Beide vangen e-mails. Het verschil is waar de inbox leeft, welke talen het ondersteunt, en wie het kan zien.

Werkt met elk framework

Je app verstuurt
Sendpit vangt
Team inspecteert

De kernloop is dezelfde: configureer SMTP, verstuur e-mails, inspecteer wat aankomt. Maar Sendpit maakt niet uit in welke taal je app is geschreven. Rails, Laravel, Django, Express, Go—alles dat SMTP spreekt werkt.

Je kunt HTML inspecteren, headers bekijken, links controleren en bijlagen downloaden. E-mails blijven bestaan op basis van je bewaringsinstellingen. Geen Ruby-installatie, geen procesbeheer, geen verloren e-mails wanneer je je laptop sluit.

Eén SMTP-config werkt over lokale dev, CI en staging. Iedereen in het team ziet wat er verstuurd wordt, ongeacht met welk framework ze werken.

E-mails worden tijdelijk opgeslagen, versleuteld en automatisch verwijderd op basis van je bewaringsinstellingen.

Ruby / Rails PHP / Laravel Python / Django Node.js Elke SMTP-client

What changes when you switch

Switching from MailCatcher to Sendpit is a credential change in your framework's mail configuration. Here's what that looks like in practice, depending on your stack.

Rails config/environments/development.rb
config.action_mailer.smtp_settings = {
  address: "your-smtp-host.sendpit.io",
  port: 587,
  user_name: "your_mailbox_username",
  password: "your_mailbox_password",
  authentication: :plain
}
Django settings.py
EMAIL_HOST = "your-smtp-host.sendpit.io"
EMAIL_PORT = 587
EMAIL_HOST_USER = "your_mailbox_username"
EMAIL_HOST_PASSWORD = "your_mailbox_password"
EMAIL_USE_TLS = True
Laravel .env
MAIL_MAILER=smtp
MAIL_HOST=your-smtp-host.sendpit.io
MAIL_PORT=587
MAIL_USERNAME=your_mailbox_username
MAIL_PASSWORD=your_mailbox_password
MAIL_ENCRYPTION=tls
Node.js (Nodemailer) mailer.js
const transport = nodemailer.createTransport({
  host: "your-smtp-host.sendpit.io",
  port: 587,
  auth: {
    user: "your_mailbox_username",
    pass: "your_mailbox_password"
  }
});

What you can remove

  • × `gem 'mailcatcher'` from your Gemfile, or the Docker service definition if you containerized it
  • × Ruby installation on machines that don't otherwise need it
  • × The MailCatcher process that needs to be running before you can test emails

What you gain

  • + Persistent emails that survive laptop restarts, container rebuilds, and deploys
  • + Team visibility—everyone sees the same inbox without sharing a machine
  • + CI and staging support with the same credentials used in local development
  • + No Ruby dependency—works with any language or framework that speaks SMTP

Functievergelijking

Functie MailCatcher Sendpit
SMTP-opvang
Cloud-gehost
Meerdere mailboxen
Teamgebruikersaccounts
Toegangsbeheer per mailbox
Webhooks
REST API
TLS-versleuteling
Responsieve preview
Spamscore
Bijlage-voorbeeld
Prijzen Gratis (Ruby gem) Gratis plan + betaald

Choosing the right tool

MailCatcher is logisch als...

  • Je alleen aan een Rails-project werkt.
  • Je hele stack Ruby is en dat waarschijnlijk blijft.
  • Je de voorkeur geeft aan offline-first, alleen-lokaal tools.
  • Je geen e-mail persistentie of delen nodig hebt.
  • You value simplicity over features and are comfortable with minimal email volume.
  • You're a solo Rails developer who wants offline-first simplicity without any external dependencies.

Sendpit is logisch als...

  • Je stack niet-Ruby services bevat.
  • Je teamgenoten of QA dezelfde e-mails moet zien.
  • Je CI-pipeline of staging-server e-mails verstuurt.
  • Je wilt dat e-mails blijven bestaan en opvraagbaar zijn.
  • You manage multiple projects and want separate mailboxes with isolated credentials.
  • You want to stop managing Ruby installations, native extension compilations, and process lifecycles for a dev tool.

Many Rails teams use both. MailCatcher for quick local debugging when you're deep in development, Sendpit for shared environments where the whole team needs visibility. MailCatcher remains a reasonable choice for solo Rails developers who want offline-first simplicity—but for polyglot teams, a language-agnostic hosted service removes an entire category of friction.

Op zoek naar andere vergelijkingen?

Frequently asked questions

Wordt MailCatcher nog onderhouden?

MailCatcher ontvangt af en toe updates, maar de ontwikkeling is aanzienlijk vertraagd. Het blijft functioneel voor basis-SMTP-opvang in Ruby-omgevingen. Als je een actief onderhouden oplossing met moderne functies nodig hebt, zijn Sendpit of Mailpit betere opties.

Werkt MailCatcher buiten Ruby en Rails?

Ja, MailCatcher vangt al het SMTP-verkeer op, ongeacht de verzendende taal. Het is echter gebouwd met Ruby en de installatie vereist een Ruby-runtime. Als je Ruby nog niet in je ontwikkelstack hebt, voegt de setup overhead toe. Sendpit werkt met elke taal via standaard SMTP en vereist geen lokale installatie.

Kan ik migreren van MailCatcher naar Sendpit?

Ja. Werk je SMTP-host en poort bij van MailCatcher's localhost:1025 naar de SMTP-inloggegevens van Sendpit. Voeg de Sendpit-gebruikersnaam en het wachtwoord toe aan je configuratie. De wijziging is hetzelfde of je nu Rails, Laravel, Django of een ander framework gebruikt — werk gewoon de SMTP-transportinstellingen bij.

Hoe verhoudt Sendpit zich tot MailCatcher voor teams?

MailCatcher is een lokale tool voor één gebruiker — het draait op de machine van één ontwikkelaar en opgevangen e-mails zijn alleen daar zichtbaar. Sendpit is ontworpen voor teams met gedeelde mailboxen, rolgebaseerd toegangsbeheer en organisatiebeheer. Je hele team kan dezelfde opgevangen teste-mails bekijken vanaf elk apparaat.

Heeft Sendpit een API zoals MailCatcher?

MailCatcher heeft een basis-HTTP-API voor het oplijsten en ophalen van berichten. Sendpit biedt een REST API met authenticatie, paginering, zoeken en bijlagen (Basic-abonnementen en hoger), plus webhooks voor realtimemeldingen (Pro+). Als je programmatische toegang tot opgevangen e-mails in CI/CD-pipelines nodig hebt, is de API van Sendpit krachtiger — maar vereist een betaald abonnement.

Is Sendpit gratis zoals MailCatcher?

MailCatcher is volledig gratis en open source. Sendpit heeft een permanente gratis laag die de meeste kleine teams dekt, zonder creditcard. Het verschil is dat MailCatcher Ruby en lokale infrastructuur vereist, terwijl Sendpit een gehoste dienst is zonder setup. Betaalde abonnementen voegen meer capaciteit en functies toe zoals webhooks en API-toegang.

Try Sendpit free

Sendpit heeft een gratis tier die de meeste kleine team behoeften dekt. Setup is hetzelfde als elke SMTP-tool—update je inloggegevens en begin met vangen. Geen Ruby vereist.

Als je het alleen-lokaal model van MailCatcher bent ontgroeid, is de snelste manier om te weten of Sendpit past het uit te proberen.

Geen creditcard vereist. Gratis tier beschikbaar.