From aa237d8628094d6221d05d21247ed541711c7fa1 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Tue, 28 Jan 2025 15:31:46 +0100 Subject: [PATCH] envoi des mails un par un pour ne pas partager toutes les adresses --- site/config/routes/send-newsletter.php | 87 +++++++++++++++++--------- 1 file changed, 58 insertions(+), 29 deletions(-) diff --git a/site/config/routes/send-newsletter.php b/site/config/routes/send-newsletter.php index 4e64c87..8341238 100644 --- a/site/config/routes/send-newsletter.php +++ b/site/config/routes/send-newsletter.php @@ -3,44 +3,73 @@ return [ 'pattern' => '/send-newsletter.json', 'method' => 'POST', - 'action' => function () { + 'action' => function () { $jsonRequest = file_get_contents("php://input"); $data = json_decode($jsonRequest); - $kirby = kirby(); - $emailPage = page("inscription")->childrenAndDrafts()->find($data->pageUri); + if (!$data || !isset($data->pageUri) || !isset($data->isTest)) { + return json_encode([ + 'status' => 'error', + 'message' => 'Invalid request data. Required fields: pageUri, isTest.' + ]); + } - $to = $data->isTest ? $kirby->users() : page("inscription")->subscribers()->toStructure()->pluck("email", true, true); - $subject = $data->isTest ? "[TEST] - " . (string) $emailPage->title() : (string) $emailPage->title(); + $kirby = kirby(); + $emailPage = page('inscription')->childrenAndDrafts()->find($data->pageUri); + + if (!$emailPage) { + return json_encode([ + 'status' => 'error', + 'message' => 'The specified page does not exist.' + ]); + } + + $recipients = $data->isTest + ? $kirby->users()->pluck('email', true, true) + : page('inscription')->subscribers()->toStructure()->pluck('email', true, true); + + if (empty($recipients)) { + return json_encode([ + 'status' => 'error', + 'message' => 'No recipients found.' + ]); + } + + $subject = $data->isTest + ? "[TEST] - " . $emailPage->title()->value() + : $emailPage->title()->value(); + + $from = new \Kirby\Cms\User([ + 'email' => 'info@actuel-inactuel.fr', + 'name' => 'actuel-inactuel', + ]); try { - if ($kirby->email([ - 'from' => "info@actuel-inactuel.fr", - 'to' => $to, - 'cc' => 'contact@adrien-payet.fr', - 'subject' => $subject, - 'template' => 'newsletter', - 'data' => [ - "body" => $emailPage->body() - ] - ])->isSent()) { - if (!$data->isTest) { - $emailPage->changeStatus("listed"); - } - - return json_encode([ - 'status' => 'success', - 'message' => - 'Email envoyé avec succès.' - ]); - } else { - return json_encode([ - "status" => "error", - "message" => "Erreur lors de l'envoi de l'email.", + foreach ($recipients as $recipient) { + $kirby->email([ + 'from' => $from, + 'to' => $recipient, + 'subject' => $subject, + 'template' => 'newsletter', + 'data' => [ + 'body' => $emailPage->body() + ] ]); } + + if (!$data->isTest) { + $emailPage->changeStatus('listed'); + } + + return json_encode([ + 'status' => 'success', + 'message' => 'Email(s) sent successfully.' + ]); } catch (Exception $error) { - return json_encode(['status' => 'error', 'message' => $error->getMessage()]); + return json_encode([ + 'status' => 'error', + 'message' => $error->getMessage() . " file " . $error->getFile() . " line " . $error->getLine() + ]); } } ];