Email Reminder для списка пользователей - PHPMAILER, PDO, CRON?
Ищу помощь / совет... у меня есть список заказов в базе данных sql, я хочу отправить напоминание по электронной почте всем пользователям с их деталями внутри.
В настоящее время я использую PHPMAILER, который отправляет письма с подтверждением / обновлением, когда что-то меняется на индивидуальной основе.
я читал что CRON это лучший вариант? Я хочу, чтобы скрипт прочитал идентификатор бронирования - получите адрес электронной почты и напишите пользователю напоминание с указанием его данных.
ниже шаблон, который у меня есть...
Функция PDO/SQL:
// Booking Reminder
function reminder24($from_record_num, $records_per_page){
$query = "SELECT
id, status, location, booking_date, booking_time, cust_name, cust_email
FROM
" . $this->table_name . " WHERE status = 'Confirmed'
ORDER BY
id DESC
LIMIT
{$from_record_num}, {$records_per_page}";
$stmt = $this->conn->prepare( $query );
$stmt->execute();
return $stmt;
}
PHPMAILER SCRIPT:
<?php
// include database and object files
include_once '../../config/database.php';
include_once '../../objects/bookings.php';
// get database connection
$database = new Database();
$db = $database->getConnection();
// prepare objects
$bookings = new Bookings($db);
// read the details of Appointment to be read
$bookings->reminder24();
// include the required mailer scripts
require 'phpmailer/src/Exception.php';
require 'phpmailer/src/PHPMailer.php';
require 'phpmailer/src/SMTP.php';
?>
<?php
/* Create a new PHPMailer object. Passing TRUE to the constructor enables exceptions. */
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
/* Open the try/catch block. */
try {
/* Set the mail sender. */
$mail->setFrom('sender@example.com', 'Sender Name');
/* Add a recipient. */
$mail->addAddress(' '. $bookings->cust_email .' ');
/* Set the subject. */
$mail->Subject = 'Appointment Reminder - '. $bookings->booking_date .' ';
$mail->isHTML(true);
/* Set the mail message body. */
$mail->Body = '<center><h1>Appointment Reminder</h1>
Hi '. $bookings->cust_name .',
<br><br>
Just a reminder about your appointment with
<b><span style="color:#ea00ff">(Person Name)</span></b> at
<b><span style="color:#ea00ff">'. $bookings->location .' </span></b> on
<b><span style="color:#ea00ff">'. $bookings->booking_date .'</span></b> @
<b><span style="color:#ea00ff">'. $bookings->booking_time .'</span></b>.
The contact details you have provided are <b>email: '. $bookings->cust_email .'</b> & <b>Phone: '. $bookings->cust_phone .'</b>
<br>
</center>
';
/* Finally send the mail. */
$mail->send();
}
catch (Exception $e)
{
/* PHPMailer exception. */
echo $e->errorMessage();
}
catch (\Exception $e)
{
/* PHP exception (note the backslash to select the global namespace Exception class). */
echo $e->getMessage();
}
?>