Адрес «Кому» добавляется дважды при использовании PHPmailer - PullRequest
2 голосов
/ 19 ноября 2011

Я использую PHPmailer для отправки писем. Однако письмо отправляется каждому пользователю дважды. Ниже приведен скриншот тестовой почты. enter image description here

Вот мой код:

<?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
?>

Ответы [ 4 ]

1 голос
/ 13 апреля 2015

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

$mailer->isSMTP();

до

$mailer->Mailer   = 'smtp'; 

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

0 голосов
/ 31 декабря 2011

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

$mailer->AddAddress($receiver);

Do

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

Надеюсь, это поможет.

0 голосов
/ 10 декабря 2012

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

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

$email = new phpmailer;
$email->mailer = "sendmail";
0 голосов
/ 19 ноября 2011

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

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

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

...