我有一个数据库,其中有一个名为mailing_list的表,它有三列first_name,last_name和email。这张桌子有两个人 第一个名字是:x1姓氏是:y1,电子邮件是:x1@yahoo.com 第二个名字是:x2姓氏是:y2,电子邮件是:x2@yahoo.com 我正在尝试使用PHP Mailer,代码如下,正在发生的事情是x1获得相同的电子邮件两次一个“亲爱的x1 y1”,第二次用“亲爱的x2 y2”。第二个名字x2得到它一次很好。我不希望同一封电子邮件多次发送给该人,我知道循环有问题。有什么帮助吗? sendemail.php页面
<?php
require("config.php");
if(isset($_POST['submit']))
{
require("class.phpmailer.php");
$mail = new PHPMailer();
$query = "SELECT * FROM mailing_list";
$result = mysqli_query($connect, $query)
or die('Error querying the database!');
$mail->IsSMTP();
$mail->Host="smtp.gmail.com";
$mail->Username="myEmailAdd";
$mail->Password="myPassWord"; //SMTP_PASS;
$mail->SMTPAuth=true;
$mail->SMTPSecure = 'tls';
$mail->From ="myEmailAdd";
$mail->FromName ="CSCA";
while($row = mysqli_fetch_array($result))
{
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$to = $row['email'];
$mail->AddAddress($to);
$mail->Subject= $_POST['subject'];
$mail->Body = "Dear $first_name $last_name,\n" . $_POST['body'];
$mail->WordWrap = 50;
if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent.';
echo 'Email sent to ' . $to . '<br/>';
}
}
mysqli_close($connect);
}
?>
这是电子邮件表格
<body>
<form method="post" action="sendemail.php">
<label for="subject">Subject of email:</label><br/>
<input type="text" id="subject" name="subject" size="60"/><br/>
<label for="body">Body of mail:</label><br/>
<textarea id="body" name="body" rows="8" cols="60"></textarea><br/>
<input type="submit" name="submit" value="Submit"/>
</form>
</body>
答案 0 :(得分:0)
AddAddress
方法只是将另一个接收者的电子邮件地址添加到已经存在的地址,因此,当您使用{{1}时,您最终第二次接收电子邮件时,这是合乎逻辑的。在一个循环中。
在使用AddAddress
添加地址之前,只需在循环中调用clearAddresses
方法 - 这将清除当前的接收电子邮件地址列表,并为您提供“重新开始”,以便下一个添加的地址将是当前发送邮件的唯一接收电子邮件地址。