WhatEver Mail

A local SMTP email capture tool built for developers. Ever wished you could test your app's email flow without signing up for a service, worrying about rate limits, or sending real emails? WhatEver Mail runs on your machine — capturing every email locally, the moment it's sent.

Your local inbox. Ever ready.

Point any SMTP-capable app at localhost:1025 and watch your emails appear instantly. No accounts. No cloud. No rate limits. Ever-present, ever-reliable, 100% offline.

macOS Windows Linux 100% Offline Free

Test email flows

🧪

Send password resets, notifications, or receipts — catch them all without leaving your machine.

Debug templates

🔍

Inspect HTML rendering, check headers, and view raw source side by side.

Ship with confidence

🚀

Verify every email looks right before it reaches a real inbox.

Installation

Download the build for your platform and run it. No installer configuration required — WhatEver Mail is ever-ready out of the box.

macOS note: On first launch, right-click → Open if Gatekeeper blocks it (unsigned build).
Linux note: chmod +x WhatEverMail.AppImage then run it.

Quick Start

From download to catching your first email in under two minutes. Three steps — that's everything you need.

1

Launch WhatEver Mail

Open the app. The SMTP server starts automatically on localhost:1025. You'll see the green SMTP :1025 listening indicator in the title bar and status bar.

WhatEver Mail
SMTP :1025
SMTP :1025 listening
0 emails
2

Point your app at localhost:1025

Point any SMTP client at localhost:1025 — no authentication, no TLS. Test with a quick curl or wire up your app's mailer. Works with every SMTP client.

# Send a test email in one line
curl --url 'smtp://localhost:1025' \
  --mail-from 'app@yourproject.dev' \
  --mail-rcpt 'user@example.com' \
  -T - <<EOF
From: app@yourproject.dev
To: user@example.com
Subject: Welcome! Ever glad you joined.
Content-Type: text/plain

Hello from WhatEver Mail!
EOF
const transporter = nodemailer.createTransport({
  host:       'localhost',
  port:       1025,
  secure:     false,
  ignoreTLS: true,
});

// Send as normal — WhatEver Mail catches it
await transporter.sendMail({
  from:    'app@yourproject.dev',
  to:      'user@example.com',
  subject: 'Welcome! Ever glad you joined.',
  html:    welcomeHtml,
});
3

Send a test email — watch it appear

Trigger any action in your app that sends email. The message appears in WhatEver Mail within milliseconds. Click it to open the preview — HTML rendered, headers parsed, source available. Every detail, instantly.

WhatEver Mail
SMTP :1025
Inbox 1
AP
app@yourproject.dev
Welcome! Ever glad you joined.
Thanks for signing up…
SMTP :1025 listening
1 email

Features

HTML Email Preview

WhatEver Mail renders HTML emails in a sandboxed iframe — exactly how a real email client would show them. Every style, every image reference, every layout element.

  • DOMPurify sanitisation removes malicious scripts before rendering
  • All external network requests are blocked — no tracking pixels load
  • Renders in full isolation so nothing escapes into the browser page
  • Automatically falls back to Text tab if no HTML part is present
Everything you've ever dreamed…
From: hello@everideas.co

Whatever you imagine —

you can build it. You can send it.

Ever notice how the best ideas start with a single message? Just pure, ever-present possibility.

🌱 Ever growingEvery idea deserves to bloom.
✨ Ever forwardProgress, one send at a time.
🚀 Ever readyYour stack, zero friction.
💌 Ever sentCatch every email. Miss nothing.
Quick note — ever tried local SMTP?
From: alice@team.dev To: dev@yourapp.local Have you ever tried running your email flow locally? No account needed, no rate limits. Point your app at localhost:1025 and every email lands right here. Ever-reliable, ever-local.

Four views for every email

Switch between four tabs with a single click — each gives you a different perspective on the same message.

  • HTML — Rendered preview in sandboxed iframe
  • Text — Plain text in IBM Plex Mono, with line wrapping
  • Source — Raw MIME source, complete and unmodified
  • Headers — Parsed key/value table, keys highlighted in accent colour
Inbox
Trash 2
Emails older than 15 days are auto-deleted
NO
noreply@evermore.io
Your ever-present opportunity
BU
build@everdeploy.sh
Deploy success — ever reliable

Delete & Trash

Emails move to Trash when deleted — they're not gone immediately. Trash is cleared automatically after 15 days, or you can empty it manually.

  • Click the trash icon in the preview header to delete an email
  • Delete key (or ⌘+Backspace on macOS) deletes the selected email
  • Multi-select with ⌘/Ctrl+Click or Shift+Click
  • Restore emails from Trash back to Inbox any time
  • Trash view shows emails older than 15 days will auto-delete

5 accent themes

Switch the app's accent colour instantly from the Theme picker in the sidebar. Your preference is saved and persists across restarts.

Ember
Midnight
Jade
Rose
Azure
  • Affects: selected rows, tab underline, badges, SMTP pill border
  • Surfaces (backgrounds) follow OS light/dark mode — themes only change the accent
  • Click any dot in the sidebar to switch; takes effect instantly
SMTP
hello@everideas.co
Everything you've ever dreamed…
HTML
Text
SMTP
hello@everideas.co
Everything you've ever dreamed…
HTML
Text
WhatEver Mail
SMTP :1025
Settings
SMTP Port
1025
Restart
SMTP :1025 listening
3 emails

SMTP status & settings

The SMTP server starts automatically when the app launches. Its status is always visible in the title bar and status bar.

  • Green pill = SMTP :1025 — server is listening
  • Red pill = server stopped or port conflict
  • Open Settings (⚙) to change the port number
  • Click Restart to apply the new port without restarting the app
  • Port setting persists across app restarts

FAQ

No. WhatEver Mail is a capture tool — it accepts SMTP connections and stores emails locally. Every email is caught before it would ever leave your machine. No emails are relayed to real addresses under any circumstances.
Default is 1025 (no root privileges needed, unlike port 25). You can change it in Settings (⚙ → SMTP Port → Restart). The new port is saved and persists across restarts.
The server couldn't bind to the port — most likely another process is already using it. Try changing the port in Settings to something like 1026 or 2525, then click Restart.
Emails are stored in a local SQLite database at your OS's app data path:
  • macOS: ~/Library/Application Support/what-ever-mail/emails.db
  • Windows: %APPDATA%\what-ever-mail\emails.db
  • Linux: ~/.config/what-ever-mail/emails.db
On macOS, closing the window minimises WhatEver Mail to the menu bar tray — it keeps running so it can ever catch emails in the background. To fully quit, right-click the tray icon and choose Quit, or press ⌘Q.
Yes. Every SMTP-capable library works — Node (Nodemailer), Python (smtplib, Django email backend), Ruby (Action Mailer), PHP (PHPMailer, Symfony Mailer), Go, Java, and more. Just point host at localhost and port at 1025, with authentication and TLS disabled.