我需要PHP Mail隐藏多个电子邮件发送中的其他收件人地址

时间:2020-08-08 08:03:27

标签: php phpmailer php-7

我有一个PHP脚本,该脚本在函数调用中向多个收件人发送电子贺卡(将每个逗号分隔的电子邮件地址和mail()分别发送给每个收件人)。但是,在查看收到的电子邮件时,每个客户端都可以看到该电子邮件发送到的其他地址,这使我相信,尽管有单独的mail()调用,但它们都是以一封电子邮件发送的。这是我当前的代码:

$to = "email1@example.com, email2@example.com,email3@example.com";

$subject = "subject";

$message = "This is body";

$headers = "MIME-Version: 1.0" . "\r\n";

$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

$headers .= 'From: <'.$from.'>' . "\r\n";

$status =  mail($to,$subject,$message,$headers);

2 个答案:

答案 0 :(得分:1)

您要么需要使用一个,例如PHPMailer,然后您就可以设置 BCC (盲抄),因此他们不能请参阅其他电子邮件地址。

PHPMailer具有更多优点,仅举几例:

  • SMTP支持
  • 附件
  • 防止标题注入攻击

否则,您可以循环整个过程,并且一次只发送到一个电子邮件地址,但这并不是很有效。

答案 1 :(得分:0)

在邮件功能处加null,收件人只看到发件人

$mrows = $sql->execute("SELECT email FROM email", SQL_RETURN_ASSOC);

$mnum = sizeof ($mrows);  

 // get the email address for who we are sending this email to.
 for ( $mi = 0; $mi < $mnum; ++$mi )
      {
       $email = $mrows [ $mi ] [ "email" ];     
       @$bcc_emails .= "".$email.", ";
      }     
 
 @$bcc_emails .= "".$email.", ";
 $headers .= "BCC: ".$bcc_emails."\n";
 mail(null, $email_subject, $email_text, $headers);