«To» адрес добавляется дважды при использовании PHPmailer

Я использую 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 ?> 

Возможно, есть обновление страницы и, следовательно, множественное выполнение. Убедитесь, что почтовый метод вызывается только браузером для каждого приемника. Чтобы убедиться, вы можете установить переменную сеанса при отправке и перейти в часть отправки только в том случае, если сеанс не установлен.

  if(!isset($_SESSION[$reciever])) { $_SESSION[$reciever] = 1; \\mail code here } else{ echo "doing it more than once"; } 

Также вы можете установить $ mailer -> $ SingleTo в значение true, чтобы вы знали, что его многократное выполнение или однократное. Вы также можете отправить метку времени с адресом электронной почты для дополнительной отладки.

У меня была та же проблема, но с использованием SMTP-соединения. Я все еще не знаю, почему, но это происходит, когда у вашего получателя нет имени. Итак, вместо

 $mailer->AddAddress($receiver); 

Делать

 $mailer->AddAddress($receiver, 'Receiver name'); 

Я надеюсь, что это помогает.

У меня была та же проблема. В моем случае смена почтовых систем сделала трюк.

По умолчанию phpMailer отправляет электронную почту с помощью Mail. Как только я сказал ему использовать Sendmail вместо этого, я прекратил получать дублированный адрес.

 $email = new phpmailer; $email->mailer = "sendmail"; 

У меня была та же проблема, для меня решение заключалось в том, чтобы изменить

 $mailer->isSMTP(); 

в

 $mailer->Mailer = 'smtp'; 

Итак, попробуйте использовать $mailer->Mailer .