我有一个PHP脚本,可以在函数调用中向多个收件人发送电子贺卡(将一系列以逗号分隔的电子邮件地址和mail()
分别发送到每个收件人)。但是,在查看收到的电子邮件时,每个客户端都可以看到电子邮件发送到的其他地址,这让我相信它们都是通过一封电子邮件发送的,尽管有单独的mail()
电话。这是我目前的代码:
<?php
$headers = "From: ".$_POST['email']."\r\n";
$headers .= "Content-type: text/html\r\n";
$array=explode(",", $_POST['sendto']);
for ($i = 0; $i < count($array); ++$i) {
mail(trim($array[$i]), "Happy Holidays!", $body, $headers);
}
?>
如何解决此问题,以便收件人只能在&#34; to&#34;中找到他们的电子邮件地址。领域? 谢谢!
答案 0 :(得分:6)
您想要使用的是BCC字段。
代码:
<?php
$_POST['email'] = str_replace(array("\n", "\r"), '', $_POST['email']);
$_POST['sendto'] = str_replace(array("\n", "\r"), '', $_POST['sendto']);
$headers = "From: " . $_POST['email'] . "\r\n"
. "Content-Type: text/html\r\n"
. "BCC: " . $_POST['sendto'] . "\r\n";
mail($_POST['email'], 'Happy Holidays!', $body, $headers);
?>
将电子邮件发送给发件人,但BCC收件人。我还从BCC和FROM字段中删除了\ r和\ n字符,否则将允许邮件头注入攻击。确保对$ body执行相同操作。