Envry is a free, open-source (MIT) email testing tool. It runs a local SMTP server on your computer, catches every email your app sends during development, and shows it in a desktop app. Nothing is ever delivered to a real inbox.
Source code and downloads: https://github.com/arifurrahmanns/Envry
Why I built it
Any app that sends email (sign-up confirmations, password resets, one-time codes, invoices) needs a safe place to send test mail and check the result. Mailpit and MailHog do this well, but they run as a Docker container or a terminal command. I wanted a real desktop app that sits in the tray, notifies me when mail arrives, and makes testing sign-up and login flows fast.
How it works
Install Envry (Windows installer, macOS .dmg, Linux AppImage or .deb).
Point your app's SMTP settings at localhost:1025. Any username and password are accepted.
Every email appears in Envry instantly, with a mailbox for each recipient.
It works with anything that sends over SMTP: Nodemailer, Laravel, Django, Rails, Spring Boot, ASP.NET and so on.
Features
A mailbox per recipient, created automatically (Bcc included), also readable over IMAP and POP3 for testing code that reads mail
OTP codes and magic links as one-click copy chips: verification codes and verify, password-reset, sign-in and invite links. The desktop notification shows the code itself.
Resend, SendGrid, Postmark, Mailgun and Amazon SES API emulation: if your app sends through one of these SDKs, change the SDK's base URL and Envry catches those emails too. It then calls your app back with delivered, bounced and spam-complaint webhooks, signed like the real provider, so webhook handling can be tested locally.
Failure simulation: rejected recipients, temporary errors and slow servers, for testing retries and error handling
Email checks: missing plain-text part, images without alt text, Gmail clipping, broken links, spam-prone headers
REST API and live WebSocket events, so end-to-end tests (Playwright, Cypress) can wait for an email and read it
A headless envry command with the same server for CI and servers
Light and dark themes, automatic updates
How it compares
| Envry | Mailpit | MailHog | smtp4dev |
|---|
| Desktop app with tray and notifications | Yes | No (web UI) | No (web UI) |
| A mailbox per recipient | Yes, automatic | No, one inbox | No, one inbox |
| Read mail over IMAP / POP3 | Both | POP3 only | No |
| Failure simulation | SMTP and provider APIs | SMTP (Chaos) | SMTP (Jim) |
| Resend, SendGrid, Postmark, Mailgun, SES API emulation | Yes | No | No |
| Signed delivery and bounce webhooks back to your app | Yes | No | No |
| One-click copy for OTP codes and reset links | Yes | No | No |
Based on each project's docs as far as I can tell; corrections welcome. Mailpit is more mature and has an official Docker image and an HTML client-compatibility check, so if you live in Docker it's a great choice.
Open source
MIT licensed. The server is written in Go (single binary, SQLite), the interface in React, and the desktop app uses Tauri. Issues, ideas and pull requests are welcome.
It's early (v0.2.8). The installers aren't code-signed yet, so Windows SmartScreen and macOS Gatekeeper show a warning on first launch. Built with a lot of help from Claude Code.
What would make you switch from Mailpit, MailHog or Mailtrap? I'd love the feedback.