From 66d74b01f7c0f0231ccaf68857d39b305e93b01e Mon Sep 17 00:00:00 2001 From: brad Date: Thu, 21 Mar 2024 20:46:08 +1100 Subject: [PATCH 1/5] Fix send mail script - correctly send only set number of emails per call - will jump through each validated mailout --- scripts/emailings/mailing-send.php | 39 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 77871ecbf0b..2cdb4dacbb1 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -52,7 +52,7 @@ if (isset($argv[2]) || !empty($argv[2])) { $login = ''; } -$max = 0; +$max = -1; if (isset($argv[3]) || !empty($argv[3])) { $max = $argv[3]; @@ -105,7 +105,7 @@ if (!empty($login)) { } // We get list of emailing id to process -$sql = "SELECT m.rowid"; +$sql = "SELECT m.rowid, m.statut as status"; $sql .= " FROM ".MAIN_DB_PREFIX."mailing as m"; $sql .= " WHERE m.statut IN (1,2)"; if ($id != 'all') { @@ -118,13 +118,22 @@ if ($resql) { $num = $db->num_rows($resql); $j = 0; - if ($num) { - for ($j = 0; $j < $num; $j++) { + if ($num) + { + for ($j = 0; $j < $num && $max!=0; $j++) + { $obj = $db->fetch_object($resql); dol_syslog("Process mailing with id ".$obj->rowid); print "Process mailing with id ".$obj->rowid."\n"; + if ($obj->status==1) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=2 WHERE rowid=".$obj->rowid; + $result_sql = $db->query($sql); + dol_syslog("Started mailing campaign ".$obj->rowid, LOG_DEBUG); + } + $emailing = new Mailing($db); $emailing->fetch($obj->rowid); @@ -185,6 +194,7 @@ if ($resql) { $now = dol_now(); $obj = $db->fetch_object($resql2); + $max--; // sendto en RFC2822 $sendto = str_replace(',', ' ', dolGetFirstLastname($obj->firstname, $obj->lastname)." <".$obj->email.">"); @@ -405,25 +415,16 @@ if ($resql) { $i++; } } else { - $mesg = "Emailing id ".$id." has no recipient to target"; + //$mesg = "Emailing id ".$id." has no recipient to target"; print $mesg."\n"; dol_syslog($mesg, LOG_ERR); - } - // Loop finished, set global statut of mail - $statut = 2; - if (!$nbko) { - $statut = 3; - } + // Loop finished, set global statut of mail + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=3 WHERE rowid=".$obj->rowid; + $result_sql = $db->query($sql); - $sqlenddate = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=".((int) $statut)." WHERE rowid=".((int) $id); - - dol_syslog("update global status", LOG_DEBUG); - print "Update status of emailing id ".$id." to ".$statut."\n"; - $resqlenddate = $db->query($sqlenddate); - if (!$resqlenddate) { - dol_print_error($db); - $error++; + dol_syslog("update global status", LOG_DEBUG); + print "Update status of emailing id ".$id." to ".$statut."\n"; } } else { dol_print_error($db); From ebdcb0fa0ea995fa026273fd456fcdb85589e1f8 Mon Sep 17 00:00:00 2001 From: brad Date: Thu, 21 Mar 2024 21:56:09 +1100 Subject: [PATCH 2/5] Fix spaces/tabs --- scripts/emailings/mailing-send.php | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 2cdb4dacbb1..3d18373e86e 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -127,11 +127,10 @@ if ($resql) { dol_syslog("Process mailing with id ".$obj->rowid); print "Process mailing with id ".$obj->rowid."\n"; - if ($obj->status==1) - { - $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=2 WHERE rowid=".$obj->rowid; - $result_sql = $db->query($sql); - dol_syslog("Started mailing campaign ".$obj->rowid, LOG_DEBUG); + if ($obj->status==1) { + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=2 WHERE rowid=".$obj->rowid; + $result_sql = $db->query($sql); + dol_syslog("Started mailing campaign ".$obj->rowid, LOG_DEBUG); } $emailing = new Mailing($db); @@ -419,12 +418,12 @@ if ($resql) { print $mesg."\n"; dol_syslog($mesg, LOG_ERR); - // Loop finished, set global statut of mail - $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=3 WHERE rowid=".$obj->rowid; - $result_sql = $db->query($sql); + // Loop finished, set global statut of mail + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=3 WHERE rowid=".$obj->rowid; + $result_sql = $db->query($sql); - dol_syslog("update global status", LOG_DEBUG); - print "Update status of emailing id ".$id." to ".$statut."\n"; + dol_syslog("update global status", LOG_DEBUG); + print "Update status of emailing id ".$id." to ".$statut."\n"; } } else { dol_print_error($db); From 4fc50c3761b1b1c0bf63e0137eda7a65a3d79075 Mon Sep 17 00:00:00 2001 From: brad Date: Thu, 21 Mar 2024 22:05:50 +1100 Subject: [PATCH 3/5] Fix newline after parenthesis --- scripts/emailings/mailing-send.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 3d18373e86e..fce65e69db3 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -118,10 +118,8 @@ if ($resql) { $num = $db->num_rows($resql); $j = 0; - if ($num) - { - for ($j = 0; $j < $num && $max!=0; $j++) - { + if ($num) { + for ($j = 0; $j < $num && $max!=0; $j++) { $obj = $db->fetch_object($resql); dol_syslog("Process mailing with id ".$obj->rowid); From 43a7db166e40d15de71b7203fbf3f659838b31fb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 21 Mar 2024 13:44:57 +0100 Subject: [PATCH 4/5] Update mailing-send.php --- scripts/emailings/mailing-send.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index 78fb388acce..dac34f9ff65 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -128,8 +128,8 @@ if ($resql) { dol_syslog("Process mailing with id ".$obj->rowid); print "Process mailing with id ".$obj->rowid."\n"; - if ($obj->status==1) { - $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut=2 WHERE rowid=".$obj->rowid; + if ($obj->status == 1) { + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing SET statut = 2 WHERE rowid = ".((int) $obj->rowid); $result_sql = $db->query($sql); dol_syslog("Started mailing campaign ".$obj->rowid, LOG_DEBUG); } From 9d31390e7483ad1a0c69790d8215746305429d1f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 21 Mar 2024 13:48:50 +0100 Subject: [PATCH 5/5] Update mailing-send.php --- scripts/emailings/mailing-send.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/emailings/mailing-send.php b/scripts/emailings/mailing-send.php index dac34f9ff65..a9a701f9f80 100755 --- a/scripts/emailings/mailing-send.php +++ b/scripts/emailings/mailing-send.php @@ -122,7 +122,7 @@ if ($resql) { $j = 0; if ($num) { - for ($j = 0; $j < $num && $max!=0; $j++) { + for ($j = 0; $j < $num && $max != 0; $j++) { $obj = $db->fetch_object($resql); dol_syslog("Process mailing with id ".$obj->rowid);