What SMTPly does — in detail

SMTPly consists of two components: a lean Windows service that accepts and relays mail, and a WPF configuration GUI that handles setup and monitoring for the admin.

The Windows service

Runs as a system service under LocalSystem. No login required, no user desktop, no tray icon in the way. The service starts automatically with Windows and operates in the background.

  • SMTP listener on port 25 or 587, optional STARTTLS
  • In-memory queue with disk persistence for larger backlogs
  • OAuth2 token management via MSAL.NET
  • Microsoft Graph Mail.Send application permission
  • Dedicated named-pipe server for live GUI communication
  • Structured logging via Serilog (file + IPC stream)
Service name: Smtply
Account: LocalSystem
Start type: Automatic
Port: 25 / 587
 
→ SMTP listener
    ↓
→ Relay queue + retry
    ↓
→ Graph /sendMail (OAuth2)

The configuration GUI

Modern WPF application with Fluent Design. Fully localized in English and German, with a guided setup wizard for the initial install.

  • Dashboard — live status, statistics, mail tracker as a DataGrid
  • System log — real-time stream of all Serilog events, with pause/filter/level
  • Settings — Microsoft 365, SMTP, STARTTLS, IP whitelist, privacy, retention
  • License — activation, re-verify, deactivation (hardware release)
  • Backup / Import — export settings as JSON and migrate to a new server
SMTPly Dashboard SMTPly Dashboard

Typical use cases

Any device or application that cannot speak OAuth2 for email delivery can use SMTPly as its SMTP gateway.

🖨️

Printers & scanners

Multifunction printers and document scanners with scan-to-email still often use plain SMTP without any OAuth2 support.

🏭

ERP systems

Many ERP solutions (e.g. Sage, Lexware, Infor, older SAP installations) send invoices, order confirmations and delivery notes via SMTP without OAuth2.

🏨

Hospitality & catering

Hotel management systems such as Oracle Fidelio Suite 8, Opera and other PMS solutions send booking confirmations, invoices and reports via SMTP — without OAuth2 support.

📋

CRM & DMS

CRM software and document management systems that send notifications, reports or workflow emails typically rely on plain SMTP.

📊

Monitoring & alerting

Backup solutions, server monitoring, PRTG, Zabbix, Check_MK and similar tools send alert emails via SMTP by default.

⚙️

Custom applications & scripts

In-house .NET, Python or PowerShell applications, batch processes and automations that use SMTP and cannot easily be rebuilt for OAuth2.

🏥

Vertical software

Industry-specific software for healthcare, legal or trades that is waiting for a vendor update — or will simply never receive OAuth2 support.

Screenshots

The interface in light and dark mode — SMTPly in action.

Dashboard & mail tracker

Dashboard Light Dashboard Dark

Settings – Microsoft 365

Settings Light Settings Dark

System log

System Log Light System Log Dark

License

License Light License Dark

Core features

📬

Mail tracker

Tabular live view of all mails with time, sender, recipient, subject, size, source IP and status. Click a row to open the full SMTP conversation and Graph response.

🔄

Smart retries

On HTTP 429 (rate limit), 503 or network errors, the mail is resent with exponential backoff. On 401, the OAuth token is refreshed and retried immediately.

🛡️

STARTTLS

Optional for incoming SMTP connections. A self-signed certificate can be generated in the GUI, or bring your own PEM/PFX — including Let's Encrypt combinations.

🌐

IP whitelist

Relay only for trusted sources. CIDR ranges like 10.0.0.0/24 supported. In open mode we still log every IP connection for audit purposes.

📧

Sender whitelist

Only defined domains may pass as MAIL FROM. Alternative: override mode — SMTPly replaces the MAIL FROM with your central relay address.

🔐

Client secret safety

The Azure client secret is stored DPAPI-encrypted under %ProgramData%\Smtply\. Only the local service account can decrypt. Warning shown if expiry < 14 days.

📊

Privacy masking

Mail addresses and subjects can be masked in the tracker (m**l@e*****e.com). Body and attachments are never stored — metadata only.

🗃️

Retention control

Log files and mail tracker DB have independently configurable retention (7 / 14 / 30 / 90 days or "Do not store" / "Unlimited"). GDPR-friendly defaults.

🔁

Backup & import

Export the complete configuration as JSON — secrets stay DPAPI-protected. Or passphrase-encrypted via PBKDF2 + AES-256-GCM for migration to another server.

📧

Usage reports by email

Daily, weekly or monthly: compact HTML digest with totals (sent / failed / rejected), average delivery duration, top senders, top recipient domains and the most common error reasons. Recipient configurable, cadence selectable, can be disabled entirely.

🔔

Secret-expiry warning

Azure client secrets expire after 6, 12 or 24 months — SMTPly remembers the expiry date and emails a reminder at 30 / 14 / 7 / 1 days before, once per threshold. Rotate well in time instead of finding out when mail stops flowing.

🧹

Ad-hoc cleanup

Straight from Settings: "Apply retention now", "Delete all log files" and "Empty mail tracker" — quick housekeeping without restarting the service or running manual SQL.

Technical specs

PlatformWindows 10 / 11, Windows Server 2016 / 2019 / 2022 / 2025
Architecturex64 (self-contained, no separate .NET runtime required)
Technology.NET 8, WPF, ModernWpfUI, Serilog, MSAL.NET, Microsoft Graph SDK 5
SMTP portConfigurable, default 25 (internal) / 587 (external)
Bind addressDefault 127.0.0.1, optional 0.0.0.0 for LAN operation
Max message size25 MB default, up to 150 MB (Graph limit)
OAuth2Azure app registration (Phase 1: customer-side), application permission Mail.Send
ConfigurationJSON, secrets DPAPI-encrypted (LocalMachine scope)
LoggingSerilog file + IPC stream to GUI, mail tracker as SQLite
InstallerInno Setup, registers Windows service automatically