【问题标题】:PHP Mail hide other recipient addresses with multiple function callsPHP Mail 使用多个函数调用隐藏其他收件人地址
【发布时间】:2012-12-21 23:10:14
【问题描述】:

我有一个 PHP 脚本,它在函数调用中向多个收件人发送电子贺卡(将一组以逗号分隔的电子邮件地址和 mail()s 分别发送给每个收件人)。然而,在查看收到的电子邮件时,每个客户都可以看到电子邮件发送到的其他地址,这让我相信它们都是在一封电子邮件中发送的,尽管有单独的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);
}
?>

如何解决此问题,以便收件人只能在“收件人”字段中看到他们的电子邮件地址? 谢谢!

【问题讨论】:

  • 不知道如何解决这个问题,但您的代码会向 1 个人发送 1 封电子邮件,因此除了他们自己之外没有人会看到任何人。 cryptic 的代码一次发送所有的电子邮件,做你想做的事,但你的也是。
  • 不正确。我知道这应该会发生,但事实并非如此。你可以看到所有的地址。除了这台服务器之外,我从未在任何服务器上发生过这种情况。

标签: php email


【解决方案1】:

您要使用的是密件抄送字段。

代码:

<?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 和 FROM 字段中删除了 \r 和 \n 字符,否则将允许邮件头注入攻击。确保对 $body 执行相同的操作。

【讨论】:

    猜你喜欢
    • 2020-11-28
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    相关资源
    最近更新 更多