2016-03-20 89 views
1

我正在使用PHPMailer並使用AddBCC發送到我的大部分地址(僅在AddAddress中使用1)。它似乎工作正常(沒有錯誤),但我發現它沒有保存(或發送到)我用$ mail-> AddBCC處理的所有地址。它跳過其中一些,但保留其他。所以,當我做一個print_r($ mail-> getBccAddresses())時,我可以看到它只有一些電子郵件地址。我正在處理我的小組地址列表,所以我可以更好地控制事情,所以我不認爲會有這樣的問題。我包括我的程序中的適用代碼:phpmailer addBCC不存儲地址

<?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 I,J,添加此電子郵件:1,2,heffxdog @我。 COM I,J,添加此電子郵件:1,3,imxearth @ gmail.com I,J,添加此電子郵件:1,4,Aaronx72 @ yahoo.com

print: Array ([0] => Array ([0] => [email protected] [1] =>) [1] => Array ([0] => [email protected] [1] =>) [2] => Array ([0] => [email protected] [1] =>))                           

難道PHPMailer的防止BCC數組中的重複地址?

+0

下面是我使用一些回聲輸出得到的一些輸出:i,j,添加此電子郵件:2,1,hlcawebmaster @ gmail.com 我,j,添加此電子郵件:2,2,psy.jennifer @ gmail。 com 我,j,添加此電子郵件:2,3,heffdog @ me.com 我,j,添加此電子郵件:2,4,hlcawebmaster @ gmail.com 將發送電子郵件列表在這裏。 BCC list = psy.jennifer @ gmail.com,heffdog @ me.com ,, bcc print:Array([0] => Array([0] => [email protected] [1] =>)[1] => Array([0] => [email protected] [1] =>)[2] => Array([0] => [email protected] [1] =>) – user2735375

+0

您不是從'addBCCAddress'檢查返回值,所以你不會看到它拒絕無效地址。 – Synchro

+0

是的,PHPMailer會跳過重複的地址。 – Synchro

回答

0

我想我找到了我的答案!看來AddBCC只會爲其陣列添加唯一的電子郵件地址。所以如果一個電子郵件地址已經存在於BCCaddresses數組中,那麼Mail-> AddBCC('email')語句將不會再添加它。這在測試時變得很明顯,因爲我們經常需要使用重複項來創建大量的電子郵件。那麼,您可以處理重複項,但它們不會被添加到BCC參數中,也不會被多次郵寄。對所有迴應的Thx!