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
- Install and launch Open Mail Catcher.
- Confirm the default server is running on 127.0.0.1:1025.
- Configure your application SMTP settings.
- Send a test message and open it from the selected inbox.
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.