-
v2.2.3 Stable
released this
2026-06-09 12:51:37 +00:00 | 0 commits to main since this release2.2.3
Release date: 2026-06-09
Fixed
- Fixed the DKIM "Try selector" form not working in Network Admin. The hidden
pageinput was set torobotstxt-smtp-network-tools(non-existent) instead of the correctrobotstxt-smtp-tools, which is the same slug used in both site and network contexts.
Compatibility
- WordPress: 5.9 - 7.1
- PHP: 8.0 - 8.5
Tests
- PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
- WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
- PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
- PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
- WP Compatibility: johnbillion/wp-compat (WP 5.9+)
Downloads
- Fixed the DKIM "Try selector" form not working in Network Admin. The hidden
-
v2.2.2 Stable
released this
2026-06-09 12:50:52 +00:00 | 1 commits to main since this release2.2.2
Release date: 2026-06-09
Fixed
- Fixed From Email and Reply-To Email fields not clearing when submitted empty.
sanitize_options()now explicitly saves''when the field is blank, instead of silently retaining the previous value. - Fixed "Clear password" button having no effect. The registered
sanitize_optioncallback was re-applying the old encrypted password when the submitted value was empty. Fixed by temporarily removing the filter before the directupdate_option()call. - Fixed "Clear password" button submitting to
options.phpinstead of the intended handler. A nested<form>inside the settings form is invalid HTML; replaced with awp_nonce_url()link (GET request). - Fixed DKIM selector form ("Try selector" button) doing nothing. The form was inside the cached tool HTML rendered via
wp_kses_post(), which strips all form elements. Moved the form torender_tools_page()where it is output as direct PHP, never passing throughkses. - Fixed Spamhaus ZEN reporting a false "Listed" result. Response code
127.255.255.254means the DNS query arrived via a public resolver (Cloudflare, Google DNS, etc.) — not that the IP is blocked. Spamhaus stopped supporting public-resolver queries in 2022. The plugin now detects this code (and127.255.255.255for rate-limit exceeded) and shows an informational error pointing to the Spamhaus web lookup tool instead.
Added
- DKIM selector auto-detection from MX records. When running the SPF/DKIM/DMARC tool, the plugin detects the email provider from MX host patterns and tries the provider's known selectors in order before falling back to
default. Supported providers: Google Workspace, Microsoft 365, Zoho, ProtonMail, Apple iCloud, Aruba, Mailchimp. - "Try a specific selector" input in the Tools → Authentication panel. Allows overriding the auto-detected selector without JavaScript; the selector is preserved in the "Run checks again" URL.
- Password field placeholder is now context-aware: shows "No password set." when no password is stored, and "Leave empty to keep the current password." when one exists.
Compatibility
- WordPress: 5.9 - 7.1
- PHP: 8.0 - 8.5
Tests
- PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
- WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
- PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
- PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
- WP Compatibility: johnbillion/wp-compat (WP 5.9+)
Downloads
- Fixed From Email and Reply-To Email fields not clearing when submitted empty.
-
v2.2.1 Stable
released this
2026-06-09 12:50:07 +00:00 | 2 commits to main since this release2.2.1
Release date: 2026-06-09
Fixed
- Fixed the statistics chart not rendering. Chart.js was enqueued in the footer but the initialization script ran before it loaded. The init code now uses
wp_add_inline_script()so WordPress guarantees the correct execution order. - Chart.js is now bundled locally in
assets/js/chart.umd.min.js. No external CDN requests are made by the plugin.
Compatibility
- WordPress: 5.9 - 7.1
- PHP: 8.0 - 8.5
Tests
- PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
- WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
- PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
- PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
- WP Compatibility: johnbillion/wp-compat (WP 5.9+)
Downloads
- Fixed the statistics chart not rendering. Chart.js was enqueued in the footer but the initialization script ran before it loaded. The init code now uses
-
v2.2.0 Stable
released this
2026-06-09 12:49:17 +00:00 | 3 commits to main since this release2.2.0
Release date: 2026-06-09
Highlights
- Security release fixing silent password corruption on save and credentials being stored in temporary transients.
- WordPress minimum compatibility lowered to 5.9, PHP minimum to 8.0.
- DMARC diagnostics now implement RFC 7489 §6.6.3 organizational domain fallback.
Fixed
- Fixed passwords with special characters (
<,>, newlines) being silently corrupted bysanitize_text_field()on save in both per-site and network settings handlers. - Fixed SMTP credentials (password, Amazon SES keys) being masked with the literal string
•instead of the bullet character•in the test email panel. - Fixed decrypted credentials being stored in a 10-minute transient after a test email send.
- Fixed rate-limit enforcement:
pre_wp_mailnow returnsfalseto short-circuitwp_mail()immediately instead of relying on a PHPMailer exception downstream. - Fixed DKIM and DMARC DNS lookups not using the timeout-protected
safe_dns_lookup()wrapper, which could cause long admin page load times when DNS was unreachable. - Fixed rate-limit transients not being removed on plugin uninstall.
Security
- Removed
sanitize_text_field()from password and credential fields — it strips valid characters and would silently corrupt credentials before encryption. - Removed
map_deep( ..., 'sanitize_text_field' )pre-sanitization from the network settings handler for the same reason. - Amazon SES access key and secret key are now also masked in the test email settings display.
Added
- DMARC diagnostics tool now implements RFC 7489 §6.6.3 organizational domain fallback. For a From address of
info@sub.example.com, the tool queries_dmarc.sub.example.comfirst and falls back to_dmarc.example.comif no record is found, displaying which level applies. - Added
get_organizational_domain()helper using a two-label heuristic.
Compatibility
- WordPress: 5.9 - 7.1
- PHP: 8.0 - 8.5
Tests
- PHP Coding Standards: squizlabs/php_codesniffer 3.x, wp-coding-standards/wpcs 3.x
- WordPress Coding Standards: WordPress-Core, WordPress-Docs, WordPress-Extra
- PHPStan: level 9, szepeviktor/phpstan-wordpress 2.x
- PHPCompatibility: phpcompatibility/php-compatibility 10.x (PHP 8.0-8.5)
- WP Compatibility: johnbillion/wp-compat (WP 5.9+)
Downloads
-
v2.1.0 Stable
released this
2026-02-09 11:57:45 +00:00 | 4 commits to main since this release2.1.0
- Added data management option to control whether plugin data is deleted on uninstall (disabled by default for data preservation).
- Added reset plugin data functionality with site-level and network-level support.
- Added unified uninstall cleanup system that handles all add-on data (Amazon SES, Newsletter).
- Added automatic password clearing when both host and username fields are empty to prevent orphaned credentials.
- Changed uninstall behavior to respect user preference: data is preserved by default unless explicitly enabled.
- Changed add-on plugins (Amazon SES, Newsletter) to no longer perform cleanup on uninstall - all cleanup is centralized in the core plugin.
Downloads
-
v2.0.1 Stable
released this
2026-02-07 10:12:01 +00:00 | 5 commits to main since this release2.0.1
- Fixed automatic password clearing when both host and username fields are empty to prevent orphaned credentials.
Downloads
-
v2.0.0 Stable
released this
2026-01-29 09:57:30 +00:00 | 6 commits to main since this release2.0.0
- Comprehensive security audit and hardening.
- Enhanced nonce validation across all forms and actions.
- Improved input sanitization and validation.
- Enhanced password encryption and migration system.
- Secure handling of superglobals and transients.
- Strengthened regex patterns and port number validation.
- Fixed potential security vulnerabilities in form handling.
- Added Reply-To email and name configuration fields for custom reply addresses.
- Added email statistics tracking system with daily counters and visual charts.
- Added statistics page with Chart.js visualization and multisite support.
- Added statistics retention settings (configurable from 1 to 365 days).
- Access control and form handling improvements.
- WordPress Multisite rate limiting enhancements.
- Empty password field handling.
- Code quality improvements throughout the plugin.
Downloads
-
1.2.0 Stable
released this
2025-11-26 08:25:54 +00:00 | 7 commits to main since this release1.2.0
- Logged failed email deliveries with status and error details in the log list and detail views.
- Captured the SMTP debug conversation for each email and surfaced it inside the log detail view.
- Fixed fatal errors in the SMTP bootstrap by restoring configuration and log cleanup hooks.
Downloads