Получить данные для тела письма: phpmailer - PullRequest
0 голосов
/ 23 октября 2019

Я хотел бы отправлять письма через phpmailer, и я хотел бы получить имя из базы данных для тела письма с зацикливанием, но мой код не работает. Он продолжает получать одно и то же имя для каждой почты. Вот мой код:

<?php  //Library require("phpmailer/classes/class.phpmailer.php");

//Database
$server = "localhost";
$username = "mydatabase_admin";
$password = "localadmin123";
$database = "mydatabase";

//Connect to database
$dbConnection = mysqli_connect($server, $username, $password, $database);

//Check connection
if ($dbConnection -> connect_error) {
    echo "Connection Failed";
    die ($dbConnection -> connect_error);
}

//Select database and data
$sql = "SELECT * FROM userdata";
$result = $dbConnection -> query($sql);

//Mailing
//Sender information
$mail = new PHPMailer();
$mail->SMTPDebug = 0;
//Use SMTP
$mail->IsSMTP();
$mail->SMTPAuth = true;
//SMTP Server
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
//SMTP Account
$mail->Username = "my_mail@gmail.com";
$mail->Password = "********";

//Automated Mail
$mail->SetFrom('tphp43598@gmail.com', 'Admin');

//Recipient info
if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc())
    { 
        $mail->AddAddress($row["Email"]);
        $mail->Subject = "Product Review Reminder";
        $mail->Body = "Hi ". $row["Full Name"] .",". "\n \nJust a reminder that you need to review the product coded ". $row["Product Handled"] . ".\n" . "Thank You";
    }
}

//Output shown                         if(!$mail->Send()) {
    echo 'Message was not sent.';
    echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
    echo "\n" . 'Message has been sent.';
} ?>

1 Ответ

0 голосов
/ 23 октября 2019
if ($result->num_rows > 0) { 
    while ($row = $result->fetch_assoc())
    { 
        $mail->AddAddress($row["Email"]);
        $mail->Subject = "Product Review Reminder";
        $mail->Body = "Hi ". $row["Full Name"] .",". "\n \nJust a reminder that you need to review the product coded ". $row["Product Handled"] . ".\n" . "Thank You";
        if(!$mail->Send()) {
            echo 'Message was not sent.';
            echo 'Mailer error: ' . $mail->ErrorInfo;
        } else {
            echo "\n" . 'Message has been sent.';
        } 
    }
}

Вы вызываете функцию sendmail () снаружи, в то время как в цикле вы получаете переменную имени, какой бы ни была последняя запись. держать внутри, пока петля.

Или, если вам нужно отслеживать статус каждой отдельной отправки почты, сохраняйте массив статусов. Продолжайте помещать сообщение в массив статуса.

...