我正在尝试将消息发送给存储在具有名称和电子邮件值的mysql数据库中的一群人。现在我只是想发送一封说“你好名字”的电子邮件。出于某种原因,每个人都会收到电子邮件,但他们收到的所有三封电子邮件都说“你好(不同的名字)”
以下是相关代码:
$result = mysql_query("SELECT `name`, `email` FROM `emails`");
while ($rows = mysql_fetch_array($result))
{
$name = $rows["name"];
$email = $rows["email"];
$mail->AddAddress($email, $name);
$mail->Subject = "Your Daily Update";
$mail->Body = "Hello $name, ";
if(!$mail->Send())
{
echo 'Mailer error: ' . $mail->ErrorInfo;
}
}
答案 0 :(得分:5)
每次循环都需要将$ mail对象重置为新实例。否则,你会一遍又一遍地向同一邮件添加地址。
答案 1 :(得分:5)
试试这个:
$result = mysql_query("SELECT `name`, `email` FROM `emails`");
while ($rows = mysql_fetch_array($result))
{
$name = $rows["name"];
$email = $rows["email"];
$mail->ClearAddresses();
$mail->AddAddress($email, $name);
$mail->Subject = "Your Daily Update";
$mail->Body = "Hello $name, ";
if(!$mail->Send())
{
echo 'Mailer error: ' . $mail->ErrorInfo;
}
}
我添加了$mail->ClearAddresses();
,这将清除之前添加的所有电子邮件。