PHPMailer在循环中发送重复项

时间:2012-06-18 13:09:09

标签: php phpmailer

我有像PHPMailer的一些人这样的问题,我在互联网上找不到任何解决方案。问题是,如果我在循环中设置它(同时,foreach),PHPMailer会发送重复项(有时多于两个)。我已经检查过循环很好,但是它一直在发送重复项。

这是我看起来更简单之后的代码。

<?
require("PHPMailer/class.phpmailer.php");
$select = mysql_query("SELECT * FROM `pm_mailmembers` WHERE `mm_interval`='2' AND   mm_blocked = 0") or die(mysql_error());
$mail = new PHPMailer();
$mail->SingleTo = true;
$mail->CharSet = "UTF-8";
$mail->Subject = "Fiscanet Nieuws";
$sendContent = "<p>This is test mail</p>";
$r_receivers = array("John"=>"john@mail.com","Mary"=>"mary@mail.com","Rob"=>"rob@mail.com");
foreach($r_receivers as $name=>$email){
    $mail->SetFrom('no-reply@yoursite.com', "Yoursite");
    $mail->MsgHTML($sendContent);
    $mail->AddAddress($email, $name);
    if($mail->Send())
        echo "Sent to: ".$email."<br/>";
    else
        echo "Not sent to: ".$email.", reason: ".$mail->ErrorInfo."<br/>";
    $mail->ClearAddresses();
}
?>

我想我需要在循环中重置mail-&gt; addaddress,但是mail-&gt; clearaddresses并没有帮助。并且所有3封电子邮件始终收到相同的电子邮件。所以所有人都收到2或3封邮件。

有人可以帮我吗?谢谢。 ayok


问题变得更加严重......我已经尝试将代码更改为简单的邮件(),并且不断发送重复邮件。可能是什么原因?这是服务器配置问题吗?

我在mysite.com的子域名中这样做,比如sub.mysite.com。 Mysite.com和sub.mysite.com位于不同的服务器中。这可能是原因吗?

谢谢, ayok

3 个答案:

答案 0 :(得分:1)

我已经处理了您发布的代码。我认为代码没有问题。

我认为当您刷新页面时,邮件就会被触发。

保持邮件代码,然后检查您收到的邮件数量。 我希望这个答案可以帮到你。

答案 1 :(得分:0)

顺便说一句,我已经在内容上设定了时间。重复项在第一个后6分钟发送。 我还设置了一个订单号,所有重复的号码都相同。

<?php
require("PHPMailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->SingleTo = true;
$mail->CharSet = "UTF-8";
$mail->Subject = "Fiscanet Nieuws";
$r_receivers = array("John"=>"john@mail.com","Mary"=>"mary@mail.com","Rob"=>"rob@mail.com");
    $i = 1;
foreach($r_receivers as $name=>$email){
    $mail->SetFrom('no-reply@yoursite.com', "Yoursite");
    $mail->MsgHTML($sendContent);
    $mail->AddAddress($email, $name);
        $sendContent = "<p>This is test mail number ".$i." sent at ".date('H:i:s')."</p>";
    if($mail->Send())
        echo "Sent to: ".$email."<br/>";
    else
        echo "Not sent to: ".$email.", reason: ".$mail->ErrorInfo."<br/>";
    $mail->ClearAddresses();
            $i++;
}
?>

答案 2 :(得分:0)

尝试

$mail->ClearAllRecipients();