phpmailer addBCC 不存储地址
Posted
技术标签:
【中文标题】phpmailer addBCC 不存储地址【英文标题】:phpmailer addBCC not storing addresses 【发布时间】:2016-07-07 02:07:27 【问题描述】:我正在使用 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
?>
如您所见,我只是在循环添加密件抄送条目。但是,当我打印出 getBCCaddresses 数组时,每个列表中总是至少缺少一封电子邮件。 PHP Mailer 中是否存在错误?还是我做错了什么?
我在另一个网站(sourceforge.net?)上看到过类似的帖子(没有任何代码),但这个问题从未得到解答。否则,没有任何类似的东西可以提供帮助。希望这里有人对此有所了解。
以下是我使用回显输出得到的一些结果: i,j,添加此电子邮件:1,1,ImxEarth@gmail.com i,j,添加此电子邮件:1,2,heffxdog@me.com i,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 是否可以防止密件抄送数组中的重复地址?
【问题讨论】:
这是我使用回显输出得到的一些输出:i,j,添加此电子邮件:2,1,hlcawebmaster@gmail.com i,j,添加此电子邮件:2,2,psy。 jennifer@gmail.com i,j,添加此电子邮件:2,3,heffdog@me.com i,j,添加此电子邮件:2,4,hlcawebmaster@gmail.com 将在此处发送电子邮件列表。 BCC list = psy.jennifer@gmail.com,heffdog@me.com,, bcc print: Array ([0] => Array ([0] => hlcawebmaster@gmail.com [1] => ) [1] = > 数组 ( [0] => psy.jennifer@gmail.com [1] => ) [2] => 数组 ( [0] => heffdog@me.com [1] => ) ) 您没有检查来自addBCCAddress
的返回值,因此您看不到它何时拒绝无效地址。
是的,PHPMailer 确实会跳过重复的地址。
【参考方案1】:
我想我找到了答案! AddBCC 似乎只会将唯一的电子邮件地址添加到其数组中。因此,如果 BCCaddresses 数组中已经存在一个电子邮件地址,则 Mail->AddBCC('email') 语句将不会再次添加它。这在测试时变得很明显,因为我们经常需要使用重复来创建大量的电子邮件。好吧,您可以处理重复的,但它们不会被添加到密件抄送参数中,也不会被多次邮寄。感谢所有回复!
【讨论】:
以上是关于phpmailer addBCC 不存储地址的主要内容,如果未能解决你的问题,请参考以下文章