phpmailer addBCC不存储地址

时间:2016-03-20 16:18:51

标签: phpmailer

我正在使用PHPMailer并使用AddBCC发送到我的大多数地址(仅使用AddAddress中需要的1个)。它似乎工作正常(没有错误),但我发现它没有保存(或发送)我使用$ mail-> AddBCC处理的所有地址。它会跳过其中的一些,但保留其他人。因此,当我执行print_r($ mail-> getBccAddresses())时,我可以看到它只有一些电子邮件地址。我正在以小组的形式处理我的地址列表,所以我可以更好地控制事情,所以我不认为会有这样的问题。我从我的程序中包含了适用的代码:

<?php session_start();

require '../PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;

$emailist_cnt = 3;

    for ($i=1; $i<= $emailist_cnt; $i++) {
      //loop to gather email addresses into array $emailistAry[][]
    }

    // First, set up email message and required parameters.
    $toname = "Grp-members";// Unused mailbox name
    $fromname = "Webmaster";  
    $replyname ="Grpwebmaster";  
        $fromaddr = $fromname."@mydomain.org";
    $toaddr = $toname."@mydomain.org";
    $rplyaddr = $replyname."@gmail".".com";

    $subject = "-- Website Update--";
    $note1 = "New content has been added to the website";
    $note2 = "Go check it out, if you want to stay up-to-date:";
    $message = "Greetings HLCA Member! ".$note1." ".$note2;

    // Set mail environment variables
    $mail->isSMTP();                                    
    $mail->Host = 'smtp.hiddenlakeonline.org';          
    $mail->SMTPAuth = true;                             
    $mail->Username = $fromname."@".$domain.".org";    
    $mail->Password = $webpass;                         
    $mail->SMTPSecure = 'tls';                          
    $mail->Port = 587;                                  

    // Set mail details that remain constant for every recipient
       $mail->SetFrom($fromaddr);      
       $mail->AddAddress($toaddr);    
       $mail->AddReplyTo($rplyaddr);  
           $mail->Subject = $subject;
       $mail->Body    = $message;

       $max_emails = 25; // max num emails per list  

    for ($i=1; $i <= $emailist_cnt; $i+=1) { 

           for ($j=1; $j <= $max_emails; $j+=1) {                  
              // Addresses in current list will be added to BCC param.  
      if ($emailistAry[$i][$j] != '') {
             $mail->AddBCC($emailistAry[$i][$j]); // add email to BCC                 }
       } // for j loop

           echo "would send to email list here. ";
       print_r($mail->getBccAddresses()); 

       // Clear cumulative recipient list for next loop
       $mail->clearBCCs();

    } // for i loop
 ?>  

如您所见,我只是在做一个循环来添加BCC条目。但是,当我打印出getBCCaddresses数组时,每个列表中始终至少缺少一封电子邮件。 PHP Mailer中是否有错误?或者我做错了什么?

我在另一个网站(sourceforge.net?)上看过类似的帖子(没有任何代码),但问题从来没有得到解答。否则,没有任何类似的东西可以提供帮助。希望有人在这里知道一些事情。

以下是我使用echo输出的一些结果:
    i,j,添加此电子邮件:1,1,ImxEarth @ gmail.com     我,j,添加此电子邮件:1,2,heffxdog @ me.com     我,j,添加此电子邮件:1,3,imxearth @ gmail.com     i,j,添加此电子邮件:1,4,Aaronx72 @ yahoo.com

print: Array ( [0] => Array ( [0] => ImForEarth@gmail.com [1] => ) [1] => Array ( [0] => heffdog@me.com [1] => ) [2] => Array ( [0] => AaronTW72@yahoo.com [1]  => ) )                                                                                                           

phpMailer可能会阻止BCC阵列中的重复地址吗?

1 个答案:

答案 0 :(得分:0)

我想我找到了答案!似乎AddBCC只会向其阵列添加唯一的电子邮件地址。因此,如果BCCaddresses数组中已存在电子邮件地址,则Mail-&gt; AddBCC(&#39; email&#39;)语句将不会再次添加。这在测试时变得明显,因为我们经常需要使用重复项来创建大量的电子邮件。好吧,您可以处理重复项,但它们不会被添加到BCC参数中,并且不会被多次邮寄。感谢所有人的回应!