PHP Mail使用多个函数调用隐藏其他收件人地址

时间:2012-12-21 23:10:14

标签: php email

我有一个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;中找到他们的电子邮件地址。领域? 谢谢!

1 个答案:

答案 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执行相同操作。