v2.2.3
This commit is contained in:
parent
1e78bb1378
commit
ed2cc2f70a
5 changed files with 96 additions and 10 deletions
|
|
@ -1,3 +1,9 @@
|
||||||
|
= 2.2.3 =
|
||||||
|
|
||||||
|
* CRITICAL FIX: 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
|
||||||
|
|
||||||
= 2.2.2 =
|
= 2.2.2 =
|
||||||
|
|
||||||
* FIXED: Newsletter now correctly respects configured batch_size when enqueuing emails
|
* FIXED: Newsletter now correctly respects configured batch_size when enqueuing emails
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,9 @@ class Plugin extends \NewsletterMailerAddon {
|
||||||
// Load text domain.
|
// Load text domain.
|
||||||
add_action( 'init', array( $this, 'load_textdomain' ) );
|
add_action( 'init', array( $this, 'load_textdomain' ) );
|
||||||
|
|
||||||
|
// Force batch size in Newsletter cron.
|
||||||
|
add_filter( 'newsletter_max_emails', array( $this, 'filter_max_emails' ), 999 );
|
||||||
|
|
||||||
// Register admin pages.
|
// Register admin pages.
|
||||||
if ( is_admin() ) {
|
if ( is_admin() ) {
|
||||||
require_once ROBOTSTXT_SMTP_NEWSLETTER_PATH . 'admin/class-settings-page.php';
|
require_once ROBOTSTXT_SMTP_NEWSLETTER_PATH . 'admin/class-settings-page.php';
|
||||||
|
|
@ -138,6 +141,25 @@ class Plugin extends \NewsletterMailerAddon {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter Newsletter's max emails per execution.
|
||||||
|
*
|
||||||
|
* Forces Newsletter to use our configured batch_size.
|
||||||
|
*
|
||||||
|
* @param int $max_emails Newsletter's calculated max emails.
|
||||||
|
*
|
||||||
|
* @return int Our configured batch_size.
|
||||||
|
*/
|
||||||
|
public function filter_max_emails( $max_emails ) {
|
||||||
|
// Only apply if our addon is enabled.
|
||||||
|
$settings = $this->get_settings();
|
||||||
|
if ( empty( $settings['enabled'] ) ) {
|
||||||
|
return $max_emails;
|
||||||
|
}
|
||||||
|
|
||||||
|
return absint( $settings['batch_size'] ?? 10 );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load plugin text domain for translations.
|
* Load plugin text domain for translations.
|
||||||
*
|
*
|
||||||
|
|
@ -172,10 +194,19 @@ class Plugin extends \NewsletterMailerAddon {
|
||||||
// Calculate optimal speed (emails per hour) based on rate limits.
|
// Calculate optimal speed (emails per hour) based on rate limits.
|
||||||
$speed = $this->calculate_optimal_speed( $smtp_settings );
|
$speed = $this->calculate_optimal_speed( $smtp_settings );
|
||||||
|
|
||||||
|
// CRITICAL: For queue-based architecture, speed must be high enough
|
||||||
|
// that Newsletter loads all emails at once. Newsletter calculates
|
||||||
|
// batch_size = speed / (60 / cron_interval). With default 5-minute cron:
|
||||||
|
// batch_size = speed / 12. To get batch_size = configured value,
|
||||||
|
// we need: speed = batch_size * 12.
|
||||||
|
$batch_size = $settings['batch_size'] ?? 10;
|
||||||
|
$speed_multiplier = 12; // Assumes 5-minute cron (12 executions per hour).
|
||||||
|
$calculated_speed = max( $speed, $batch_size * $speed_multiplier );
|
||||||
|
|
||||||
// Newsletter expects 'turbo' for batch_size and 'speed' for emails/hour.
|
// Newsletter expects 'turbo' for batch_size and 'speed' for emails/hour.
|
||||||
$mailer_options = array(
|
$mailer_options = array(
|
||||||
'turbo' => $settings['batch_size'] ?? 10,
|
'turbo' => $batch_size,
|
||||||
'speed' => $speed,
|
'speed' => $calculated_speed,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Detect if Amazon SES is active.
|
// Detect if Amazon SES is active.
|
||||||
|
|
@ -188,6 +219,47 @@ class Plugin extends \NewsletterMailerAddon {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get maximum emails per execution.
|
||||||
|
*
|
||||||
|
* Newsletter checks this method to determine batch size.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_max_emails() {
|
||||||
|
$settings = $this->get_settings();
|
||||||
|
return absint( $settings['batch_size'] ?? 10 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get batch size.
|
||||||
|
*
|
||||||
|
* Alternative method that Newsletter may check.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_batch() {
|
||||||
|
return $this->get_max_emails();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override Newsletter's calculation of emails per run.
|
||||||
|
*
|
||||||
|
* Newsletter normally calculates: batch = speed / runs_per_hour
|
||||||
|
* For queue-based architecture, we want to enqueue all emails at once.
|
||||||
|
*
|
||||||
|
* @return int Configured batch_size.
|
||||||
|
*/
|
||||||
|
public function get_emails_per_run() {
|
||||||
|
$settings = $this->get_settings();
|
||||||
|
if ( empty( $settings['enabled'] ) ) {
|
||||||
|
// If addon is disabled, use parent's calculation.
|
||||||
|
return parent::get_emails_per_run();
|
||||||
|
}
|
||||||
|
|
||||||
|
return absint( $settings['batch_size'] ?? 10 );
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate optimal speed (emails per hour) based on rate limits.
|
* Calculate optimal speed (emails per hour) based on rate limits.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
10
readme.txt
10
readme.txt
|
|
@ -4,7 +4,7 @@ Tags: newsletter, smtp, email, bulk, queue, worker, amazonses, statistics
|
||||||
Requires at least: 4.7
|
Requires at least: 4.7
|
||||||
Tested up to: 6.9
|
Tested up to: 6.9
|
||||||
Requires PHP: 7.2
|
Requires PHP: 7.2
|
||||||
Stable tag: 2.2.2
|
Stable tag: 2.2.3
|
||||||
License: GPLv2 or later
|
License: GPLv2 or later
|
||||||
License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
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 ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 2.2.3 =
|
||||||
|
* CRITICAL FIX: 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
|
||||||
|
|
||||||
= 2.2.2 =
|
= 2.2.2 =
|
||||||
* FIXED: Newsletter now correctly respects configured batch_size when enqueuing emails
|
* FIXED: Newsletter now correctly respects configured batch_size when enqueuing emails
|
||||||
* FIXED: Emails are now enqueued all at once to database instead of gradually
|
* FIXED: Emails are now enqueued all at once to database instead of gradually
|
||||||
|
|
@ -180,6 +185,9 @@ Yes. The plugin integrates with ROBOTSTXT SMTP rate limiting system to ensure yo
|
||||||
|
|
||||||
== Upgrade Notice ==
|
== Upgrade Notice ==
|
||||||
|
|
||||||
|
= 2.2.3 =
|
||||||
|
CRITICAL: Fixed Newsletter loading only 8-16 emails per execution. Now correctly loads all emails based on configured batch_size.
|
||||||
|
|
||||||
= 2.2.2 =
|
= 2.2.2 =
|
||||||
Fixed batch size enforcement - emails now enqueue correctly all at once instead of gradually.
|
Fixed batch size enforcement - emails now enqueue correctly all at once instead of gradually.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
* Plugin Name: Newsletter - SMTP (by ROBOTSTXT)
|
* Plugin Name: Newsletter - SMTP (by ROBOTSTXT)
|
||||||
* Plugin URI: https://git.robotstxt.es/ROBOTSTXT/robotstxt-smtp-newsletter
|
* 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.
|
* Description: Integrates ROBOTSTXT SMTP configuration with Newsletter plugin for efficient bulk email delivery with database-backed queue and external workers.
|
||||||
* Version: 2.2.2
|
* Version: 2.2.3
|
||||||
* Requires at least: 4.7
|
* Requires at least: 4.7
|
||||||
* Requires PHP: 7.2
|
* Requires PHP: 7.2
|
||||||
* Security: robotstxt@robotstxt.es
|
* Security: robotstxt@robotstxt.es
|
||||||
|
|
@ -25,7 +25,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Plugin constants.
|
// Plugin constants.
|
||||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION', '2.2.2' );
|
define( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION', '2.2.3' );
|
||||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_FILE', __FILE__ );
|
define( 'ROBOTSTXT_SMTP_NEWSLETTER_FILE', __FILE__ );
|
||||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_PATH', plugin_dir_path( __FILE__ ) );
|
define( 'ROBOTSTXT_SMTP_NEWSLETTER_PATH', plugin_dir_path( __FILE__ ) );
|
||||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_URL', plugin_dir_url( __FILE__ ) );
|
define( 'ROBOTSTXT_SMTP_NEWSLETTER_URL', plugin_dir_url( __FILE__ ) );
|
||||||
|
|
|
||||||
10
update.json
10
update.json
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue