我有一个SQL table来显示项目的到期日期,并且我想每天通过电子邮件发送到期日期的状态,我希望用户知道所列项目的到期日期更新。
我尝试通过使用localhost使用this example in phpmailer,它可以工作,但是我不知道如何将其与我的案例联系起来。
例如,是否可以像这样$body= include ('sql.php');
进行操作,或者是否有其他方法可以这样做?我仅对从this table发送到期日期和到期消息感兴趣,并且可以发送整个表?
这是SQL代码
<?php
$con=mysqli_connect('localhost','','','arduino');
if(mysqli_connect_errno($con))
{
echo 'Failed to connect:'.mysqli_connect_error();
}
else
echo 'Connected Successfully!! </br>';
$url=$_SERVER['REQUEST_URI'];
$sql = "SELECT
ID,
Item_Name,
Expiry_Date,
CASE
WHEN `Expiry_Date` < CURDATE() THEN CONCAT(`Item_Name`,' has EXPIRED already')
WHEN `Expiry_Date` = CURDATE() THEN CONCAT(`Item_Name`,' will expire today')
WHEN `Expiry_Date` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire tomorrow')
WHEN `Expiry_Date` > DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' has not expire yet')
ELSE 'Error processing expiration date.'
END AS `Expiration_Message`
FROM
test;";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)){
echo ($row['Expiration_Message']);
echo '<br>';
}
print_r($row);
mysqli_close($con);
?>
这是我从phpmailer示例中获取的代码
<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//Load composer's autoloader
require 'vendor/autoload.php';
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
//$mail->SMTPDebug = 1; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'Smtp.live.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'XXXXX@hotmail.com'; // SMTP username
$mail->Password = 'XXXXX'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('XXXXX@hotmail.com', 'Smart Fridge');
$mail->addAddress('XXXXX@gmail.com', 'Joe'); // Add a recipient
$body= '<p><td><strong>Hello</strong></td> this is my first email!!!!</p>';
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Expiry Date';
$mail->Body = $body;
$mail->AltBody = strip_tags($body);
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
最佳答案
您需要将结果存储到变量中,而不是回显它。
$mailBody = '';
while($row = mysqli_fetch_array($result)){
$mailBody .= $row['Expiration_Message'] . "<br>\n";
}
然后
$mail->Body = $mailBody;
.=
是用于连接字符串的运算符。它等于:$mailBody = $mailBody . 'something new string to concat';
关于php - 如何使用phpmailer从SQL表发送信息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47265350/