From c053ce2d2787734ca9d3c4c92b2b6d82a74dd07a Mon Sep 17 00:00:00 2001 From: isUnknown Date: Thu, 6 Feb 2025 17:28:09 +0100 Subject: [PATCH] =?UTF-8?q?script=20d'envoi=20de=20newsletter=20en=20masse?= =?UTF-8?q?=20termin=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../send-button/routes/send-newsletter.php | 52 +++++++------------ .../src/components/SendButtonField.vue | 6 --- 2 files changed, 20 insertions(+), 38 deletions(-) diff --git a/site/plugins/send-button/routes/send-newsletter.php b/site/plugins/send-button/routes/send-newsletter.php index 903418a..b3d052f 100644 --- a/site/plugins/send-button/routes/send-newsletter.php +++ b/site/plugins/send-button/routes/send-newsletter.php @@ -45,41 +45,31 @@ return [ ? '[TEST] - ' . $emailPage->title()->value() : $emailPage->title()->value(); - // $from = new \Kirby\Cms\User([ - // 'email' => 'info@actuel-inactuel.fr', - // 'name' => 'actuel-inactuel', - // ]); - $sentEmails = []; $errors = []; + $mailersend = new MailerSend(['api_key' => kirby()->option('mailerSendApiKey')]); + $bulkEmailParams = []; + foreach ($recipients as $recipient) { - try { + $bulkEmailParams[] = (new EmailParams()) + ->setFrom('info@actuel-inactuel.fr') + ->setFromName('actuel-inactuel') + ->setRecipients(new Recipient($recipient, 'abonné')) + ->setSubject($subject) + ->setHtml($emailPage->body()) + ->setReplyTo('info@actuel-inactuel.fr') + ->setReplyToName('actuel-inactuel'); - $mailersend = new MailerSend(['api_key' => kirby()->option('mailerSendApiKey')]); + $sentEmails[] = $recipient; + } - $recipients = [ - new Recipient($recipient, 'abonné'), - ]; - - $emailParams = (new EmailParams()) - ->setFrom('info@actuel-inactuel.fr') - ->setFromName('actuel-inactuel') - ->setRecipients($recipients) - ->setSubject($subject) - ->setHtml($emailPage->body()) - ->setReplyTo('info@actuel-inactuel.fr') - ->setReplyToName('actuel-inactuel'); - - $mailersend->email->send($emailParams); - - $sentEmails[] = $recipient; - } catch (Exception $error) { - $errors[] = [ - 'email' => $recipient, - 'message' => $error->getMessage(), - ]; - } + try { + $response = $mailersend->bulkEmail->send($bulkEmailParams); + file_put_contents(__DIR__ . '/mailersend_log.json', json_encode($response, JSON_PRETTY_PRINT)); + } catch (\Exception $e) { + file_put_contents(__DIR__ . '/mailersend_errors.log', $e->getMessage()); + $error[] = 'Error. See https://developers.mailersend.com/general.html#api-response for explanations : ' . $e->getMessage(); } if (!$data->isTest) { @@ -90,9 +80,7 @@ return [ return json_encode([ 'status' => empty($errors) ? 'success' : 'partial', - 'message' => empty($errors) ? 'All emails sent successfully.' : 'Certains emails n\'ont pas pu être envoyé.', - 'sent' => $sentEmails, - 'failed' => $errors, + 'message' => empty($errors) ? 'All emails sent successfully.' : $errors, ]); }, ]; diff --git a/site/plugins/send-button/src/components/SendButtonField.vue b/site/plugins/send-button/src/components/SendButtonField.vue index b063a94..8656f86 100755 --- a/site/plugins/send-button/src/components/SendButtonField.vue +++ b/site/plugins/send-button/src/components/SendButtonField.vue @@ -109,12 +109,6 @@ async function send(event, isTest = false) { }, 2000); } else { let errorMessage = data.message || "Erreur inconnue"; - - if (data.failed && data.failed.length > 0) { - const failedEmails = data.failed.map((f) => f.email).join(", "); - errorMessage += `\nEmails non envoyés : ${failedEmails}`; - } - throw new Error(errorMessage); } } catch (error) {