ChangemakerStudios/Papercut-SMTP
Papercut SMTP -- The Simple Desktop Email Server
✨ New Features
- Service Tray Manager - New Windows tray notification application for managing the Papercut SMTP Windows Service. Provides system tray icon with service status, start/stop/restart controls, quick access to the web UI, balloon notifications for new emails, and run-at-startup support. Fixes [#249](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/249)
- Upgrade Dialog with Release Notes - When an update is available, a new dialog shows current vs. new version with rendered release notes so you can review changes before upgrading. Fixes [#344](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/344)
- System Accent Color - Added a "System" option to the theme accent dropdown that reads and syncs with the Windows accent color in real-time. Now the default for new installs. Fixes [#343](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/343)
- Web UI Overhaul - Completely refreshed the Papercut Service web interface:
- Replaced Glyphicons with inline SVGs for a cleaner, dependency-free icon set
- Per-message delete with confirmation via new `DELETE /api/messages/{id}` endpoint
- Auto-refresh toggle button and browser back-button navigation
- Modern visual design with Plus Jakarta Sans font, refined colors, and improved layout
- + 1 more
🐛 Bug Fixes
- FileSystemWatcher Reliability - Fixed emails silently stopping to appear in the UI. Root cause was FileSystemWatcher buffer overflows from excessive NotifyFilter events. Now uses FileName-only filter, 64KB buffer, auto-recreation on faults, and a 30-second periodic fallback refresh. Fixes [#352](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/352)
- Notification Title - Fixed Windows toast notifications showing "velopack.PapercutSMTP" instead of "Papercut SMTP" by using Velopack's native `--aumid` flag at install time. Fixes [#350](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/350)
- CID Embedded Images - Fixed intermittent failure to load Content-ID embedded images in the HTML viewer due to incorrect `file://` URL format and MimeMessage cache state issues
- HTML Email Preview (Web UI) - Fixed iframe collapsing to ~8px and load event race conditions by switching to `$watch`-based rendering with direct document writing, ResizeObserver support, and retry-based height measurement
- Cross-Thread Theme Exception - Fixed crash when Windows system theme changes while the app is running
📦 Improvements
- Security: jQuery & Frontend Library Upgrades - Upgraded jQuery 1.11.0 to 3.7.1 and jQuery UI 1.10.4 to 1.14.1, mitigating CVE-2020-11022 and CVE-2020-11023 (XSS vulnerabilities). Also upgraded AngularJS 1.3.8 to 1.8.3 and Bootstrap 3.3.2 to 3.4.1. Fixes [#353](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/353)
- Aspire Integration Documentation - Added documentation for using Papercut SMTP with .NET Aspire projects, including connection string format and setup examples. (Thanks, [mguinness](https://github.com/mguinness)!)
- Docker Documentation - Added troubleshooting guide for volume permission errors when running with mounted volumes
- Dependencies - Updated NuGet packages and Velopack to v0.0.1521
📦 Contributors
- Special thanks to [AntekOlszewski](https://github.com/AntekOlszewski) for fixing the Delete All race condition and [mguinness](https://github.com/mguinness) for documenting Aspire integration!
- Several features and fixes in this release were developed with the assistance of [Claude Code](https://claude.ai).
📦 Papercut SMTP v7.6.2 [2025-11-11]
- *Release replaces 7.6.1 which had a major issue with email receiving in the UI.*
✨ New Features
- Dark Theme Support - Added full dark theme support with automatic Windows dark mode detection and synchronization. Fixes [#228](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/228) (Thanks, [wonea](https://github.com/wonea)!)
- System/Light/Dark base theme selection with accent color customization
- Automatic system dark mode detection with live theme updates
- AvalonEdit syntax highlighting supports both light and dark modes
- Theme-aware attachment icons and UI controls throughout the application
- IP Allowlist Support - Added IP allowlist filtering for SMTP and HTTP connections with CIDR notation support. Fixes [#333](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/333) (Thanks, [mhkarimi1383](https://github.com/mhkarimi1383)!)
- Configurable via `SmtpServer:AllowedIps` setting
- Support for individual IPs (e.g., `192.168.1.100`) and CIDR ranges (e.g., `192.168.1.0/24`)
- + 8 more
📦 Improvements
- .NET 9.0 Upgrade - Upgraded entire solution to .NET 9.0 for improved performance and latest framework features
- Theme Consistency - Modernized UI to use dynamic theming with refreshed Options dialog and message list visuals
- Tab Preservation - Selected message detail tab (Message/Body/Headers/Raw) now preserved when switching between messages
- Code Quality - Fixed numerous compiler warnings and null-safety issues throughout the codebase
- Resource Management - Fixed X509Certificate2Collection resource leak
- Docker Improvements - Updated container and runtime images for .NET 9.0
📦 Code Quality
- Comprehensive unit tests for IP allowlist validation
- More flexible SMTP/server startup wiring and options
- Internal robustness improvements with clearer initialization and lifecycle handling
- Better error handling across core components
📦 Contributors
- Special thanks to [wonea](https://github.com/wonea) for requesting dark theme support and [mhkarimi1383](https://github.com/mhkarimi1383) for requesting IP allowlist functionality!
🐛 Bug Fixes
- Forwarding Rules Failing - Fixed critical bug where email forwarding rules were completely broken due to TaskCanceledException. Fixes [#331](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/331) (Thanks, [wcwhitehead](https://github.com/wcwhitehead)!)
- SSL/TLS Connection Mode - Fixed SSL/TLS connection mode to use SslOnConnect for port 465 and Auto for STARTTLS
- SMTP Timeout - Set proper SMTP timeout of 30 seconds for forwarding rules
- Backend Service Status - Fixed initial status detection for backend service
📦 Contributors
- Special thanks to [wcwhitehead](https://github.com/wcwhitehead) for reporting the critical forwarding rules bug!
✨ New Features
- Search Functionality - Added Ctrl+F search to all message detail views (Message, Body, Headers, and Raw). Fixes [#295](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/295)
- Zoom Controls - Added Ctrl+Mouse Scroll Wheel zoom support to message detail views with persistence and visual indicators. Fixes [#323](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/323)
- Attachment Display - Attachments now display in the main message panel with icons and easy access. Fixes [#112](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/112)
- Context Menu for Links - Right-click context menu added for email links with copy and open functionality. Fixes [#218](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/218)
- Empty State Placeholders - Added smart empty state messaging to message list and detail views for better first-time user experience. Fixes [#268](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/268)
- SMTP Authentication and TLS/STARTTLS Support - Full support for SMTP authentication and TLS/STARTTLS encryption for secure email testing. Fixes [#102](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/102)
- Periodic Background Rules - Added periodic background rule execution with mail retention cleanup to both UI and Service. Related to [#251](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/251)
- Windows Package Manager (winget) Support - Papercut SMTP can now be installed and updated via winget. Fixes [#231](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/231)
- + 3 more
📦 Improvements
- Word-Wrap Support - Added CSS word-wrap support to HTML email rendering for better display of long text strings. Fixes [#154](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/154)
- Non-Standard Email Domains - Added support for non-standard email domains in development environments (e.g., .local, .dev). Fixes [#284](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/284)
- SSL Certificate Error Handling - Added optional SSL certificate error handling for WebView2 to support self-signed certificates. Fixes [#243](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/243)
- Comprehensive Unit Tests - Added extensive unit tests with FluentAssertions for improved code quality and reliability
- NuGet Package Upgrades - Upgraded all NuGet packages to latest versions, including migration to new Polly ResiliencePipeline API
- Service Architecture - Refactored attachment and process handling into dedicated services for better separation of concerns
- Settings Debouncing - Implemented debounced settings saves using Rx Throttle operator to reduce unnecessary I/O
🐛 Bug Fixes
- Window Size Saving - Fixed window size not saving correctly when minimized. Fixes [#327](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/327)
- PDF Attachment Opening - Fixed PDF attachment opening on Windows 11 24H2 and double-click issues. Fixes [#310](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/310), [#280](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/280)
- Message Rendering with # Characters - Fixed message rendering for subjects containing # characters. Fixes [#282](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/282) (Thanks, [xavero](https://github.com/xavero)!)
- SMTP IP Logging - Fixed SMTP service not logging remote client IP address correctly. Fixes [#291](https://github.com/ChangemakerStudios/Papercut-SMTP/issues/291)
- Empty State Flicker - Fixed placeholder flicker when switching between emails
- WebView2 Deserialization - Added robust error handling for WebView2 message deserialization
- Null Safety - Various null safety improvements and fixes throughout the codebase
- Process.Start Null Checks - Added null checks for Process.Start return values to prevent exceptions
📦 Code Quality
- Refactored to use IUiCommandHub.ShowMessage instead of MessageBox.Show for better testability
- Extracted debouncing logic into reusable SettingsSaveDebouncer
- Improved async patterns and error handling in example applications
- Fixed test assertions to use FluentAssertions consistently
- Added nullable reference type attributes throughout codebase
📝 Documentation
- Added comprehensive TLS/STARTTLS setup documentation with Docker examples
- Created example projects: SendEmailTest, SendRichEmailTest, SendWordWrapTest, SendEmailWithTls, SendEmailWithFileLinks
- Improved Docker documentation with troubleshooting guides
- Added installation guide for PowerShell and command-line users
📦 Contributors
- Special thanks to [xavero](https://github.com/xavero) for fixing message rendering with # characters!
📦 Upgrading
- NOTE: Velopack "Auto-Upgrade" doesn't work before this (v7.0.2) version. You must download the setup and re-run it to upgrade. Once you're on this version, the auto-upgrade system will work!
📦 Improvements
- Modernized versioning system to use Directory.Build.props instead of GlobalAssemblyInfo.cs
- Added Windows ARM64 support (#283)
- Improved port configuration for SMTP and HTTP services (#285, #286, #293)
- Enhanced Docker support with non-privileged ports (SMTP: 2525, HTTP: 8080)
- Consolidated documentation and improved Docker build process
🐛 Bug Fixes
- Fixed Windows Service installation and auto-start issues (#294)
- Fixed Linux path separator handling (#292)
- Fixed SMTP server options configuration
📦 Build System
- Refactored build.cake to reduce code duplication
- GitVersion now populates version properties via MSBuild
- Removed deprecated assembly patching approach
📦 Papercut SMTP v7.0.1 [2024-11-08]
- Fixed Run on Startup broken. (Thanks, [rikrak](https://github.com/rikrak)))
- Drop service installation mention from README by @Kissaki in https://github.com/ChangemakerStudios/Papercut-SMTP/pull/278
- Full Changelog: https://github.com/ChangemakerStudios/Papercut-SMTP/compare/7.0.0...7.0.1
📦 Papercut SMTP v7.0.0 [2024-10-18]
- _NOTE: Uninstall any existing Papercut SMTP installations BEFORE installing this new version._
- Upgraded to .NET 8
- Upgraded to latest dependencies (Caliburn Micro, Autofac, MahApps) and associated systems to support .NET 8.
- Switched to [Velopack](https://github.com/velopack/velopack) auto-upgradable installation system. Great project! (Thanks, [caesay](https://github.com/caesay)!)
- Fix for log updating constantly causing unnecessary WebView2 loading. (PR thanks to [arthurzaczek](https://github.com/arthurzaczek))
- Fix for double request when clicking on links in emails. Issue #232.
- Added InvokeProcess Rule (#274)
📦 Papercut SMTP 7.0.0 RC1 [2024-06-8]
- _NOTE: Uninstall any existing Papercut SMTP installations BEFORE installing this new version._
- Upgraded to .NET 8
- Upgraded to latest dependencies (Caliburn Micro, Autofac, MahApps) and associated systems to support .NET 8.
- Switched to [Velopack](https://github.com/velopack/velopack) auto-upgradable installation system. Great project! (Thanks, [caesay](https://github.com/caesay)!)
- Fix for log updating constantly causing unnecessary WebView2 loading. (PR thanks to [arthurzaczek](https://github.com/arthurzaczek))
📋 Changes
- Upgraded to .NET Framework v4.8 (PR thanks to [1Jesper1](https://github.com/1Jesper1))
- Service doesn't overwrite settings on exit anymore.
- Simplified HTTP binding setting for Service. Basically, "http://0.0.0.0" for "all" binding works again.
- Added Attachment Icon (PR thanks to [Cload](https://github.com/Cload))
- Added graceful fall-back support and error message if WebView2 isn't properly installed.
- Fix for checking registry key for installing edge webview2 & version fixes (PR thanks to [1Jesper1](https://github.com/1Jesper1))
📋 Changes
- Moved to Edge (WebView2) for email display providing modern browser support for viewing.
- Support for SVGs.
- Support for newer HTML/CSS display.
- Fixed: Progress bar for Forwarding Dialog displays correctly now.
- Fixed: Multiple issues with the forwarding dialog.
- [#193] Add logging path to settings.json (PR thanks to [1Jesper1](https://github.com/1Jesper1))
- [#192] Adds an option (defaulting to true) to enable popup notifications when a new message is received. (PR thanks to [richardlawley](https://github.com/richardlawley))
- [#189] Use first capital character in text in "proceed" and "cancel" buttons (PR thanks to [1Jesper1](https://github.com/1Jesper1))
📋 Changes
- Moved to .NET Framework 4.7.2
- Upgraded to latest dependencies (Caliburn Micro, Autofac, MahApps)
- Fixed: Window sizes weren't binding properly.
- Converted system to Async.
- Added additional theme colors.
- Updated the logo.
- Fixed: Hide passwords in rules logging output.
- Fixed: Don't show passwords in rules logging output.
- + 3 more
📦 Papercut SMTP v5.7.0 [2020-04-05]
- Renamed product to "Papercut SMTP" to seperate from other products.
- Moved "Readme.eml" and logs to *\ProgramData\Changemaker Studios\Papercut SMTP* allowing it to be deleted.
- Changed default save directory for Papercut UI to *\%ApplicationData%\Changemaker Studios\Papercut SMTP*. Mail in legacy paths are still supported.
- Added support for embedded message mime types and the ability to save the embedded eml.
- Performance improvements loading messages.
- Misc bug fixes.
Updated MIME nugets to latest. Fixes issue #50 .
Changes/Fixes Border Color Doesn't Change with Theme Changes #54 ConnectionManager check for idle connections is incorrect #52 Papercut.Service.json Options #46
Removed "Always on disk logging" Theme Switcher Improved Option Handling Minimize to Tray Option
Bug fixes for Message Encoding
• Added Bcc support to message saving. Before the value was just getting thrown away. • Fixes issue clicking some urls. • Added conditional forward rule with retry. • Fix for minor issue when saving and the window height/width is saved incorrectly.
