【发布时间】:2022-09-27 09:56:56
【问题描述】:
我想发送一封包含过去 30 天概览的邮件。每个人都应该根据“姓氏”字段收到一封邮件。
该脚本到目前为止有效,但每个人都收到一封邮件,但没有被收集。
use PHPMailer\\PHPMailer\\PHPMailer;
use PHPMailer\\PHPMailer\\Exception;
use PHPMailer\\PHPMailer\\SMTP;
error_reporting(E_STRICT | E_ALL);
date_default_timezone_set(\'Etc/UTC\');
require (\"/usr/share/php/libphp-phpmailer/autoload.php\");
$mysql = mysqli_connect(\'localhost\', \'user\', \'password\');
mysqli_select_db($mysql, \'verein\');
$query = \'SELECT OrderId, date, firstname, lastname, name, menge, Stueckpreis, Gesamt from orders_products, customers, products WHERE orders_products.Kundenid = customers.k_id AND orders_products.Productid = products.p_id AND date >= now() - INTERVAL 30 DAY ORDER BY OrderId DESC\';
$result = $mysql->query($query);
foreach ($result as $row){
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = \'\';
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true; //SMTP connection will not close after each email sent, reduces SMTP overhead
$mail->Port = 587;
$mail->Username = \'\'; //SMTP username
$mail->Password = \'\'; //SMTP password
$mail->setFrom(\', \'\');
$mail->addReplyTo(\'@\', \'Information\');
$mail->AddAddress(\'\');
//Content
$mail->IsHTML(true);
$mail->Subject = \'Test Mail\';
$mail->Body = \"Hallo \" . $row[\'firstname\']. \" \". $row[\'lastname\']. \",<br><br>;
$mail->send();
echo \'Message has been sent\';
我怎样才能做到这一点,以便区分关键姓氏的输出并且每个人都只收到一封带有他的预订的邮件?
-
有了数据和想要的结果,我们可以理解你所说的收集是什么意思?每个客户都会收到一封电子邮件?
-
顺便说一句,那是无效的代码。不要在循环内发送邮件,在变量中收集您需要的所有信息并发送电子邮件后循环
-
\"每个人都收到一封邮件,但没有收集" - 这是什么意思?另外,这是邮件问题,还是 MySQL 问题?