Open Mail Catcher documentation

Configure local applications to send development email into Open Mail Catcher, then inspect every message safely on your Mac.

Quick start

  1. Install and launch Open Mail Catcher.
  2. Confirm the default server is running on 127.0.0.1:1025.
  3. Configure your application SMTP settings.
  4. Send a test message and open it from the selected inbox.
Host127.0.0.1
Port1025
Securitynone
Authnot required

Nodemailer

The default server accepts unauthenticated local messages. Use `secure: false` because Open Mail Catcher listens as a local SMTP server, not a TLS relay.

import nodemailer from "nodemailer";

const transport = nodemailer.createTransport({
  host: "127.0.0.1",
  port: 1025,
  secure: false,
  auth: undefined
});

await transport.sendMail({
  from: "[email protected]",
  to: "[email protected]",
  subject: "Test email",
  html: "<h1>Hello</h1><p>This was caught locally.</p>",
  text: "Hello. This was caught locally."
});

Multiple servers

Create additional SMTP server profiles when separate apps, test suites, or framework examples need isolated inboxes. Each profile has its own host, port, auth settings, status, and captured messages.

  • Use 127.0.0.1 unless you intentionally need another host.
  • Choose an unused local port such as 1026 or 2525.
  • Keep auto-start enabled for profiles you use every day.

SMTP AUTH

Auth is optional and local-only. Enable it when you want to test code paths that require a username and password without connecting to a real provider.

const transport = nodemailer.createTransport({
  host: "127.0.0.1",
  port: 1026,
  secure: false,
  auth: {
    user: "dev",
    pass: "secret"
  }
});

Attachments

Attachments are parsed from MIME messages, stored locally, and shown with filename, content type, and size. Use the attachment tab in a captured message to save files for inspection.

Security

Open Mail Catcher is a development tool. It does not relay messages and does not upload captured email anywhere.

  • SMTP binds to 127.0.0.1 by default.
  • Captured messages and attachments are stored locally.
  • HTML previews are sandboxed and scripts are blocked.
  • External images are blocked by default in the desktop app.

Troubleshooting

Port already in use

If 127.0.0.1:1025 is already taken, edit the server profile and pick another local port.

No messages appear

Check the selected server profile and make sure your app uses the same host, port, secure setting, and auth credentials.