2016-03-20 20 views
1

PHPMailer kullanıyorum ve adreslerimin çoğuna göndermek için AddBCC kullanıyorum (sadece AddAddress'de gerekli olan 1'i kullanın). Tamam (hata yok) çalışıyor gibi görünüyor, ama ben $ mail-> AddBCC ile işlediğim tüm adresleri kaydetme (veya gönderme) olmadığını bulduk. Bazılarını atlar, başkalarını da tutar. Bu yüzden, bir print_r ($ mail-> getBccAddresses()) yaptığımda, sadece e-posta adreslerinden bazılarının olduğunu görebiliyorum. Adresler listemi küçük gruplar halinde işliyorum, böylece işleri daha iyi kontrol edebiliyorum, bu yüzden böyle bir sorun olacağını düşünmüyorum. Benim programdan uygulanabilir kodu dahil duyuyorum: phpmailer addBCC adresleri saklamıyor

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

Gördüğünüz gibi

, sadece BCC girişler eklemek için bir döngü yapıyorum. Ancak, getBCCaddresses dizisini yazdığımda, her listeden en az bir e-posta eksiktir. PHP Mailer'de bir hata var mı? Yoksa yanlış bir şey mi yapıyorum?

Benzer bir gönderiyi (herhangi bir kod olmadan) başka bir sitede (sourceforge.net?) Gördüm, ancak soru hiç yanıtlanmadı. Aksi takdirde, yardımcı olabilecek benzer bir şey olmamıştır. Umarım birileri bu konuda bir şey bilir.

İşte yankı çıkışları kullanarak almak bazı sonuçlar şunlardır:
i, j, bu e-posta ekleme: 1,1, ImxEarth @ gmail.com i, j, bu e-posta ekleme: Benim @ 1,2, heffxdog. com i, j, bu e-posta ekleme: imxearth 1,3 @ gmail.com i, j, bu e-posta ekleme: 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] =>))                           

mümkün PHPMailer önlemesidir BCC dizisinde yinelenen adresler?

+0

Bazı eko çıkışı kullanarak bazı çıktılar: i, j, bu e-postayı ekleyerek: 2,1, hlcawebmaster @ gmail.com i, j, bu e-postayı ekleyerek: 2,2, psy.jennifer @ gmail. com i, j, bu e-postayı ekleyerek: 2,3, heffdog @ me.com i, j, bu e-postayı ekleyerek: 2,4, hlcawebmaster @ gmail.com burada e-posta listesi gönderir. BCC listesi = psy.jennifer @ gmail.com, heffdog @ me.com ,, bcc print: Array ([0] => Array ([0] => [email protected] [1] =>) [1] => Array ([0] => [email protected] [1] =>) [2] => Dizi ([0] => [email protected] [1] =>)) – user2735375

+0

Sen değilsin dönüş değerlerini "addBCCAddress" adresinden kontrol ederek, geçersiz adresleri reddettiğinde görmüyorsunuz. – Synchro

+0

Ve evet, PHPMailer yinelenen adresleri atlıyor. – Synchro

cevap

0

Sanırım cevabımı buldum! AddBCC'nin dizisine yalnızca benzersiz e-posta adresleri ekleyeceği anlaşılıyor. Yani e-posta adresi BCCaddresses dizisinde zaten varsa, Mail-> AddBCC ('e-posta') deyimi yeniden eklemez. Bu, test edilirken görünür hale gelir, çünkü e-postaları iyi bir şekilde oluşturmak için çoğaltmaları kullanmamız gerekir. Yinelenenleri işleyebilirsin, ancak bunlar BCC parametresine eklenmeyecek ve bir kereden fazla postalanmayacaklar. Yanıtlayan herkese teşekkürler!