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 =
|
||||
|
||||
* FIXED: Newsletter now correctly respects configured batch_size when enqueuing emails
|
||||
|
|
|
|||
|
|
@ -126,6 +126,9 @@ class Plugin extends \NewsletterMailerAddon {
|
|||
// Load text domain.
|
||||
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.
|
||||
if ( is_admin() ) {
|
||||
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.
|
||||
*
|
||||
|
|
@ -172,10 +194,19 @@ class Plugin extends \NewsletterMailerAddon {
|
|||
// Calculate optimal speed (emails per hour) based on rate limits.
|
||||
$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.
|
||||
$mailer_options = array(
|
||||
'turbo' => $settings['batch_size'] ?? 10,
|
||||
'speed' => $speed,
|
||||
'turbo' => $batch_size,
|
||||
'speed' => $calculated_speed,
|
||||
);
|
||||
|
||||
// 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.
|
||||
*
|
||||
|
|
|
|||
10
readme.txt
10
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.2
|
||||
Stable tag: 2.2.3
|
||||
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.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 =
|
||||
* FIXED: Newsletter now correctly respects configured batch_size when enqueuing emails
|
||||
* 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 ==
|
||||
|
||||
= 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 =
|
||||
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 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.2
|
||||
* Version: 2.2.3
|
||||
* 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.2' );
|
||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_VERSION', '2.2.3' );
|
||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_FILE', __FILE__ );
|
||||
define( 'ROBOTSTXT_SMTP_NEWSLETTER_PATH', plugin_dir_path( __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