diff --git a/changelog.txt b/changelog.txt
index fa8ef3f..69155e9 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,9 @@
+= 2.2.5 =
+
+* CRITICAL FIX: Worker now loads plugin manually in DOING_CRON context
+* FIXED: "Newsletter SMTP plugin is not active" error in worker script
+* IMPROVED: Worker compatibility with all WordPress environments including MultiSite
+
= 2.2.4 =
* CRITICAL FIX: Speed calculation now uses actual NEWSLETTER_CRON_INTERVAL value
diff --git a/readme.txt b/readme.txt
index a90eee4..c3398c2 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ Tags: newsletter, smtp, email, bulk, queue, worker, amazonses, statistics
Requires at least: 4.7
Tested up to: 6.9
Requires PHP: 7.2
-Stable tag: 2.2.4
+Stable tag: 2.2.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -141,6 +141,11 @@ Yes. The plugin integrates with ROBOTSTXT SMTP rate limiting system to ensure yo
== Changelog ==
+= 2.2.5 =
+* CRITICAL FIX: Worker now loads plugin manually in DOING_CRON context
+* FIXED: "Newsletter SMTP plugin is not active" error in worker script
+* IMPROVED: Worker compatibility with all WordPress environments including MultiSite
+
= 2.2.4 =
* CRITICAL FIX: Speed calculation now uses actual NEWSLETTER_CRON_INTERVAL value
* FIXED: Batch_size was being divided by 5 due to incorrect cron interval assumption
@@ -191,6 +196,9 @@ Yes. The plugin integrates with ROBOTSTXT SMTP rate limiting system to ensure yo
== Upgrade Notice ==
+= 2.2.5 =
+CRITICAL: Fixed worker script not loading plugin in DOING_CRON context. Essential for worker functionality.
+
= 2.2.4 =
CRITICAL: Fixed speed calculation to work with any Newsletter cron interval. Resolves batch_size division issues.
diff --git a/robotstxt-smtp-newsletter.php b/robotstxt-smtp-newsletter.php
index bfd98d9..fe0e299 100644
--- a/robotstxt-smtp-newsletter.php
+++ b/robotstxt-smtp-newsletter.php
@@ -3,7 +3,7 @@
* Plugin Name: Newsletter - SMTP (by ROBOTSTXT)
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-newsletter
* Description: Integrates ROBOTSTXT SMTP configuration with Newsletter plugin for efficient bulk email delivery with database-backed queue and external workers.
- * Version: 2.2.4
+ * Version: 2.2.5
* Requires at least: 4.7
* Requires PHP: 7.2
* Security: robotstxt@robotstxt.es
@@ -25,7 +25,7 @@ if ( ! defined( 'ABSPATH' ) ) {
}
// Plugin constants.
-define( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION', '2.2.4' );
+define( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION', '2.2.5' );
define( 'ROBOTSTXT_SMTP_NEWSLETTER_FILE', __FILE__ );
define( 'ROBOTSTXT_SMTP_NEWSLETTER_PATH', plugin_dir_path( __FILE__ ) );
define( 'ROBOTSTXT_SMTP_NEWSLETTER_URL', plugin_dir_url( __FILE__ ) );
diff --git a/update.json b/update.json
index dba7501..f0d393d 100644
--- a/update.json
+++ b/update.json
@@ -1,19 +1,19 @@
{
"name": "Newsletter - SMTP (by ROBOTSTXT)",
"slug": "robotstxt-smtp-newsletter",
- "version": "2.2.4",
+ "version": "2.2.5",
"author": "ROBOTSTXT",
"homepage": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-newsletter",
- "download_url": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-newsletter/releases/download/2.2.4/robotstxt-smtp-newsletter-2.2.4.zip",
+ "download_url": "https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-newsletter/releases/download/2.2.5/robotstxt-smtp-newsletter-2.2.5.zip",
"requires": "4.7",
"tested": "6.9",
"requires_php": "7.2",
"last_updated": "2026-02-16",
"description": "Integrates ROBOTSTXT SMTP configuration with Newsletter plugin for reliable bulk email delivery with database-backed queue and external workers. Provides persistent email queue, parallel processing, automatic retry, and comprehensive campaign statistics.",
- "changelog": "
2.2.4 - 2026-02-16
- CRITICAL: Speed calculation now uses actual NEWSLETTER_CRON_INTERVAL value
- Fixed: Batch_size was being divided by 5 due to incorrect cron interval assumption
- Improved: Plugin now dynamically calculates speed based on actual Newsletter cron interval
- Technical: Loads Newsletter's cron.php to detect actual interval, supports any cron interval without hardcoded assumptions
2.2.3 - 2026-02-16
- CRITICAL: Overridden get_emails_per_run() to bypass Newsletter's internal calculation
- Fixed: Newsletter was calculating batch = speed / 12, resulting in only 8-16 emails per execution
- Fixed: Plugin now directly returns configured batch_size for proper queue loading
- Technical: Added get_emails_per_run() override in Plugin class
2.2.2 - 2026-02-16
- Fixed: Newsletter now correctly respects configured batch_size when enqueuing emails
- Fixed: Emails are now enqueued all at once to database instead of gradually
- Improved: Added public $batch property that Newsletter reads directly
- Improved: Added get_batch_size() method for Newsletter compatibility
- Technical: Mailers expose batch_size through multiple interfaces for Newsletter compatibility
2.2.1 - 2026-02-16
- Added: MultiSite detection in settings page with tailored worker commands
- Added: Worker script now supports --url parameter for MultiSite environments
- Improved: Settings page automatically displays installation-specific worker setup instructions
- Improved: Worker documentation with MultiSite usage examples
- Improved: README with dedicated MultiSite Installations section
- Technical: Worker script parses --url parameter and sets appropriate $_SERVER variables
- Technical: Settings page uses is_multisite() and get_site_url() for detection and URL generation
2.2.0 - 2026-02-16
- MAJOR: Database-backed email queue for persistent, reliable email delivery
- MAJOR: External CLI worker script for asynchronous email processing
- Added: Queue Status widget with real-time statistics (pending, processing, sent, failed)
- Added: Recent Campaigns section with key metrics in settings page
- Added: Email Queue admin page to view all queued and sent emails
- Added: Statistics admin page with campaign performance metrics
- Added: Parallel worker support for high-volume sending (10+ workers simultaneously)
- Added: Automatic retry with exponential backoff (up to 3 attempts: 5min → 15min → 30min)
- Added: Campaign statistics tracking (start time, duration, speed, success rate)
- Changed: Emails are now queued to database instead of sent immediately
- Changed: Settings page reorganized with Queue Status, Recent Campaigns, and Worker Configuration sections
- Changed: Campaign statistics now grouped by unique Newsletter ID instead of campaign name
- Removed: max_per_connection setting (no longer needed with worker architecture)
- Removed: Direct PHPMailer usage (replaced with wp_mail() in workers)
- Fixed: Duplicate campaign statistics for campaigns with same name but different IDs
- Fixed: Worker command documentation (corrected parallel worker syntax)
- BREAKING: Manual worker setup required - emails no longer send automatically
- BREAKING: System cron or process supervisor required for production use
- Technical: New database tables for queue and statistics with automatic creation on activation
- Technical: Microsecond precision timestamps for accurate performance metrics
- Security: CLI-only worker script with SQL injection prevention and capability checks
2.1.0 - 2026-02-09
- Changed: Uninstall behavior: plugin no longer performs cleanup on uninstall, all data cleanup is now handled by the core SMTP plugin
- Changed: This ensures Newsletter configuration is preserved when only the add-on is removed, and properly cleaned when the core plugin is uninstalled
- Technical: Simplified uninstall.php to delegate all cleanup responsibility to core SMTP plugin
2.0.1 - 2026-01-29
- Changed: Removed Network requirement from plugin headers to allow single-site activation
2.0.0 - 2026-01-29
- Changed: Updated compatibility with SMTP (by ROBOTSTXT) plugin 2.0.0
- Changed: Enhanced integration with core SMTP plugin security improvements
- Improved: Better error handling and validation
1.0.0 - 2026-01-29
- Added: Initial release with SMTPKeepAlive support
- Added: Amazon SES API integration for optimized delivery
- Performance: 20-30x faster bulk email sending compared to standard wp_mail()
",
+ "changelog": "2.2.5 - 2026-02-16
- CRITICAL: Worker now loads plugin manually in DOING_CRON context
- Fixed: Newsletter SMTP plugin is not active error in worker script
- Improved: Worker compatibility with all WordPress environments including MultiSite
- Technical: Worker attempts to load plugin file directly if not already loaded via hooks
2.2.4 - 2026-02-16
- CRITICAL: Speed calculation now uses actual NEWSLETTER_CRON_INTERVAL value
- Fixed: Batch_size was being divided by 5 due to incorrect cron interval assumption
- Improved: Plugin now dynamically calculates speed based on actual Newsletter cron interval
- Technical: Loads Newsletter's cron.php to detect actual interval, supports any cron interval without hardcoded assumptions
2.2.3 - 2026-02-16
- CRITICAL: Overridden get_emails_per_run() to bypass Newsletter's internal calculation
- Fixed: Newsletter was calculating batch = speed / 12, resulting in only 8-16 emails per execution
- Fixed: Plugin now directly returns configured batch_size for proper queue loading
- Technical: Added get_emails_per_run() override in Plugin class
2.2.2 - 2026-02-16
- Fixed: Newsletter now correctly respects configured batch_size when enqueuing emails
- Fixed: Emails are now enqueued all at once to database instead of gradually
- Improved: Added public $batch property that Newsletter reads directly
- Improved: Added get_batch_size() method for Newsletter compatibility
- Technical: Mailers expose batch_size through multiple interfaces for Newsletter compatibility
2.2.1 - 2026-02-16
- Added: MultiSite detection in settings page with tailored worker commands
- Added: Worker script now supports --url parameter for MultiSite environments
- Improved: Settings page automatically displays installation-specific worker setup instructions
- Improved: Worker documentation with MultiSite usage examples
- Improved: README with dedicated MultiSite Installations section
- Technical: Worker script parses --url parameter and sets appropriate $_SERVER variables
- Technical: Settings page uses is_multisite() and get_site_url() for detection and URL generation
2.2.0 - 2026-02-16
- MAJOR: Database-backed email queue for persistent, reliable email delivery
- MAJOR: External CLI worker script for asynchronous email processing
- Added: Queue Status widget with real-time statistics (pending, processing, sent, failed)
- Added: Recent Campaigns section with key metrics in settings page
- Added: Email Queue admin page to view all queued and sent emails
- Added: Statistics admin page with campaign performance metrics
- Added: Parallel worker support for high-volume sending (10+ workers simultaneously)
- Added: Automatic retry with exponential backoff (up to 3 attempts: 5min → 15min → 30min)
- Added: Campaign statistics tracking (start time, duration, speed, success rate)
- Changed: Emails are now queued to database instead of sent immediately
- Changed: Settings page reorganized with Queue Status, Recent Campaigns, and Worker Configuration sections
- Changed: Campaign statistics now grouped by unique Newsletter ID instead of campaign name
- Removed: max_per_connection setting (no longer needed with worker architecture)
- Removed: Direct PHPMailer usage (replaced with wp_mail() in workers)
- Fixed: Duplicate campaign statistics for campaigns with same name but different IDs
- Fixed: Worker command documentation (corrected parallel worker syntax)
- BREAKING: Manual worker setup required - emails no longer send automatically
- BREAKING: System cron or process supervisor required for production use
- Technical: New database tables for queue and statistics with automatic creation on activation
- Technical: Microsecond precision timestamps for accurate performance metrics
- Security: CLI-only worker script with SQL injection prevention and capability checks
2.1.0 - 2026-02-09
- Changed: Uninstall behavior: plugin no longer performs cleanup on uninstall, all data cleanup is now handled by the core SMTP plugin
- Changed: This ensures Newsletter configuration is preserved when only the add-on is removed, and properly cleaned when the core plugin is uninstalled
- Technical: Simplified uninstall.php to delegate all cleanup responsibility to core SMTP plugin
2.0.1 - 2026-01-29
- Changed: Removed Network requirement from plugin headers to allow single-site activation
2.0.0 - 2026-01-29
- Changed: Updated compatibility with SMTP (by ROBOTSTXT) plugin 2.0.0
- Changed: Enhanced integration with core SMTP plugin security improvements
- Improved: Better error handling and validation
1.0.0 - 2026-01-29
- Added: Initial release with SMTPKeepAlive support
- Added: Amazon SES API integration for optimized delivery
- Performance: 20-30x faster bulk email sending compared to standard wp_mail()
",
"sections": {
- "description": "Integrates ROBOTSTXT SMTP configuration with Newsletter plugin for reliable bulk email delivery with database-backed queue and external workers. Version 2.2.4 fixes speed calculation to work correctly with any Newsletter cron interval. Emails are queued to database and processed by external CLI workers, providing reliability, scalability, and detailed monitoring.",
- "changelog": "2.2.4 - 2026-02-16
- CRITICAL: Fixed speed calculation for any Newsletter cron interval
- Fixed: Batch_size division issue resolved by dynamic interval detection
2.2.3 - 2026-02-16
- CRITICAL: Fixed Newsletter loading only 8-16 emails per execution
- Fixed: Overridden get_emails_per_run() to return configured batch_size directly
2.2.2 - 2026-02-16
- Fixed: Batch size enforcement - emails now enqueue correctly all at once
- Improved: Newsletter compatibility with $batch property and get_batch_size() method
2.2.1 - 2026-02-16
- Added: MultiSite detection with tailored worker commands
- Added: Worker --url parameter support for MultiSite
- Improved: Installation-specific worker setup instructions
2.2.0 - 2026-02-16
- MAJOR: Database-backed email queue for persistent, reliable email delivery
- MAJOR: External CLI worker script for asynchronous email processing
- Added: Queue Status widget with real-time statistics
- Added: Recent Campaigns section with key metrics
- Added: Email Queue admin page
- Added: Statistics admin page with campaign metrics
- Added: Parallel worker support (10+ workers)
- Added: Automatic retry with exponential backoff
- Changed: Emails queued to database instead of sent immediately
- Changed: Campaign statistics grouped by Newsletter ID
- Removed: max_per_connection setting
- Fixed: Duplicate campaign statistics
- BREAKING: Manual worker setup required
"
+ "description": "Integrates ROBOTSTXT SMTP configuration with Newsletter plugin for reliable bulk email delivery with database-backed queue and external workers. Version 2.2.5 fixes worker script compatibility ensuring it loads correctly in all WordPress environments. Emails are queued to database and processed by external CLI workers, providing reliability, scalability, and detailed monitoring.",
+ "changelog": "2.2.5 - 2026-02-16
- CRITICAL: Fixed worker plugin loading in DOING_CRON context
- Improved: Worker compatibility with MultiSite and all WordPress environments
2.2.4 - 2026-02-16
- CRITICAL: Fixed speed calculation for any Newsletter cron interval
- Fixed: Batch_size division issue resolved by dynamic interval detection
2.2.3 - 2026-02-16
- CRITICAL: Fixed Newsletter loading only 8-16 emails per execution
- Fixed: Overridden get_emails_per_run() to return configured batch_size directly
2.2.2 - 2026-02-16
- Fixed: Batch size enforcement - emails now enqueue correctly all at once
- Improved: Newsletter compatibility with $batch property and get_batch_size() method
2.2.1 - 2026-02-16
- Added: MultiSite detection with tailored worker commands
- Added: Worker --url parameter support for MultiSite
- Improved: Installation-specific worker setup instructions
2.2.0 - 2026-02-16
- MAJOR: Database-backed email queue for persistent, reliable email delivery
- MAJOR: External CLI worker script for asynchronous email processing
- Added: Queue Status widget with real-time statistics
- Added: Recent Campaigns section with key metrics
- Added: Email Queue admin page
- Added: Statistics admin page with campaign metrics
- Added: Parallel worker support (10+ workers)
- Added: Automatic retry with exponential backoff
- Changed: Emails queued to database instead of sent immediately
- Changed: Campaign statistics grouped by Newsletter ID
- Removed: max_per_connection setting
- Fixed: Duplicate campaign statistics
- BREAKING: Manual worker setup required
"
},
"banners": {
"low": "",
diff --git a/worker.php b/worker.php
index 81eaf1f..9909d2b 100644
--- a/worker.php
+++ b/worker.php
@@ -74,9 +74,20 @@ if ( ! file_exists( $wp_load_path ) ) {
require_once $wp_load_path;
-// Verify plugin is active.
+// Load plugin if not already loaded (happens in DOING_CRON context)
if ( ! defined( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION' ) ) {
- fwrite( STDERR, "Error: Newsletter SMTP plugin is not active\n" );
+ $plugin_file = __DIR__ . '/robotstxt-smtp-newsletter.php';
+ if ( file_exists( $plugin_file ) ) {
+ require_once $plugin_file;
+ } else {
+ fwrite( STDERR, "Error: Newsletter SMTP plugin file not found\n" );
+ exit( 1 );
+ }
+}
+
+// Verify plugin loaded successfully
+if ( ! defined( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION' ) ) {
+ fwrite( STDERR, "Error: Newsletter SMTP plugin could not be loaded\n" );
exit( 1 );
}