我正在使用PHPmailer发送邮件。但是,邮件将被发送给每个用户两次。下面是测试邮件的屏幕截图。
以下是我的代码:
<?php
##REQUIRED FUNCTION
function send_mail_to($receiver, $msg)
{
$subject="[ TNP Update ] - Do you like the new look ?";
#Grab the PHPmailer class
require_once('./lib/phpmailer/phpmailer.inc.php');
#Create object
$mailer = new PHPmailer(); //Instantiate class
$mailer->From="tnp@aakashbhowmick.in";
$mailer->FromName="TNP Mailer";
$mailer->IsHTML(true);
$mailer->Subject = $subject;
$mailer->Body = $msg;
$mailer->AddAddress($receiver);
#Send the email
set_time_limit(300);
$mailer->Send();
} //End of send_mail_to()
###### THE WORKING CODE ######
#Only authorised access is allowed.
if($_POST['signature']=="some-secret-signature-here"){
$msg1=urldecode($_POST['text']);
# Formatting the message a little
$msg1=str_replace("#c0c0c0","#EAE99A",$msg1);
$msg1=str_replace("<td","<td style='font-family:Trebuchet MS,Verdana,arial'; ",$msg1);
#Start sending mails. Some lines commented for testing purpose
//include("connection.php");
//$result=mysql_query("SELECT * FROM subscribers");
$subscriber=array('id'=>'1','email'=>'aakashrocks@gmail.com','active'=>'1');
//while($subscriber=mysql_fetch_array($result)){
if($subscriber['active']==1){
$body="Some text";
send_mail_to($subscriber['email'], $body);
} #End-of-if
//} #End-of-while
} ##End of if
?>
答案 0 :(得分:1)
我有同样的问题,因为解决方案是改变
$mailer->isSMTP();
到
$mailer->Mailer = 'smtp';
因此,请尝试使用$mailer->Mailer
。
答案 1 :(得分:0)
可能是页面刷新因此多次执行 - 确保浏览器只为每个接收者调用一次mail方法。为了确保,您可以在发送时设置会话变量,并且仅在未设置会话时进入发送部分。
if(!isset($_SESSION[$reciever]))
{
$_SESSION[$reciever] = 1;
\\mail code here
}
else{
echo "doing it more than once";
}
此外,您可以将$ mailer-&gt; $ SingleTo设置为true,这样您就可以知道它是多次执行还是单次执行。您还可以使用电子邮件发送时间戳以进行更多调试。
答案 2 :(得分:0)
我遇到了同样的问题但是使用了SMTP连接。 我仍然不知道为什么但是当你的收件人没有名字时就会发生这种情况。 所以,而不是
$mailer->AddAddress($receiver);
待办事项
$mailer->AddAddress($receiver, 'Receiver name');
我希望它有所帮助。
答案 3 :(得分:0)
我遇到了同样的问题。在我的情况下,改变邮件系统就可以了。
默认情况下,phpMailer使用Mail发送电子邮件。一旦我告诉它使用Sendmail,我就停止获取重复的地址。
$email = new phpmailer;
$email->mailer = "sendmail";