隐藏其他收件人

时间:2012-08-07 20:51:33

标签: php email

我有一个邮件程序功能,它将邮件发送给从数据库中提取的收件人。如何隐藏其他收件人? BCC不起作用。梅勒来源:

$to=array();
while($row = mysql_fetch_array($subscrquery)) {
    array_push($to, $row['subscr_mail']);
}
$msgheader=$ttl;

$mailheaders  = "MIME-Version: 1.0\r\n";
$mailheaders .= "Content-type: text/html; charset=UTF-8\r\n";
$mailheaders .= "From: ".$sender." <".$sender.">\r\n";
$mailheaders .= "Reply-To: ".$sender." <".$sender.">\r\n";
$mailheaders .= "Bcc: ".implode(',', $to)."\r\n";           
$mailmsga .= stripslashes($mailcontent);
$mailmsg .= strtr($mailmsga, array("<" => "\n<"));
mail(implode(',', $to), $msgheader,$mailmsg,$mailheaders);

3 个答案:

答案 0 :(得分:3)

通常,您希望每个收件人发送一封电子邮件。发送BCC将使您更有可能通过垃圾邮件过滤器进行过滤。

如果您的列表很大,那么您将希望避免使用PHP的内置mail方法,因为它会打开并关闭每个电子邮件的连接。相反,您应该使用SMTP电子邮件,该电子邮件只会为发送的所有电子邮件打开一个连接。可能的选择:

大多数较大的框架,如Zend,也可能有自己的SMTP邮件程序。

一般情况下,最好使用现有的软件包,这样就不必担心标题注入,电子邮件的最大行长等等。

答案 1 :(得分:1)

你的最后一行有问题:

mail(implode(',', $to), $msgheader,$mailmsg,$mailheaders);

就在那里,你正在向所有人发送电子邮件。 BCC已经处理好了。在邮件的第一个参数中使用伪造的地址(或您的地址,或其他),它应该解决问题。最后一行应该是这样的:

mail('mailer@wherever.com', $msgheader,$mailmsg,$mailheaders);

答案 2 :(得分:0)

只需添加此行

即可
$headers .= 'To:  Unknown<undefined>' . "\r\n";