我有一个邮件程序功能,它将邮件发送给从数据库中提取的收件人。如何隐藏其他收件人? 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);
答案 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";