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