PHP 电子邮件发送密件抄送

Posted

技术标签:

【中文标题】PHP 电子邮件发送密件抄送【英文标题】:PHP Email sending BCC 【发布时间】:2012-03-20 11:47:04 【问题描述】:

我知道有一些类似的问题,但我就是无法让它发挥作用。

好的,我在一个名为 $emailList 的变量中从我的数据库中抓取了一个电子邮件列表。 如果我将变量放在$to 部分,我可以让我的代码从表单发送电子邮件,但是 我无法让它与密件抄送一起使用。我什至向$to 添加了一封电子邮件,以防万一,但这并没有什么不同。

这是我的代码。

$to = "name@mydomain.com";
$subject .= "".$emailSubject."";
$headers .= 'Bcc: $emailList';
$headers = "From: no-reply@thepartyfinder.co.uk\r\n" . "X-Mailer: php";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$message = '<html><body>';
$message .= 'THE MESSAGE FROM THE FORM';

if (mail($to, $subject, $message, $headers)) 
    $sent = "Your email was sent!";
 else 
    $sent = ("Error sending email.");

两种代码我都试过了:

$headers .= 'Bcc: $emailList';

$headers .= 'Bcc: '.$emailList.';

这并不是说电子邮件没有分开,因为它们是分开的。我知道它们是因为如果我将$emailList 放在$to 部分中它会起作用。


我应该添加,忽略 $message 位和 HTML 内容。我没有提供所有这些,所以这就是代码中缺少它的原因。

【问题讨论】:

您在密件抄送标头后缺少“\r\n”,然后您将用 From 覆盖下一行的标头。 我也尝试过使用 \r\n。那么我在哪里把密件抄送?它需要在特定的地方吗? @drew010,您的评论应该作为答案发布。 @drew010 非常感谢!它现在正在工作。如果您将其发布为答案,我会接受。 @BenToms 不用担心我很懒,很高兴你现在可以正常工作了。 【参考方案1】:

您正在设置密件抄送,但随后用 FROM 覆盖了变量

$to = "name@mydomain.com";
     $subject .= "".$emailSubject."";
 $headers .= "Bcc: ".$emailList."\r\n";
 $headers .= "From: no-reply@thepartyfinder.co.uk\r\n" .
     "X-Mailer: php";
     $headers .= "MIME-Version: 1.0\r\n";
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
 $message = '<html><body>';
 $message .= 'THE MESSAGE FROM THE FORM';

     if (mail($to, $subject, $message, $headers)) 
     $sent = "Your email was sent!";
      else 
      $sent = ("Error sending email.");
     

【讨论】:

\r\n 应该用双引号括起来,否则按字面意思理解。只有BCC 上的那个有这个问题。【参考方案2】:

您有$headers .= '...';,后跟$headers = '...';;第二行覆盖第一行。

只需将$headers .= "Bcc: $emailList\r\n"; 放在Content-type 行之后就可以了。

附带说明,To 通常是必需的;否则邮件服务器可能会将您的邮件标记为垃圾邮件。

$headers  = "From: no-reply@thepartyfinder.co.uk\r\n" .
  "X-Mailer: php\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "Bcc: $emailList\r\n";

【讨论】:

在标题中未指定“收件人”时,我从来没有遇到过问题。 我不怀疑。我只是说那里有各种各样的邮件服务器和垃圾邮件过滤器,而带有缺失/奇怪标题位的电子邮件通常会获得更高的垃圾邮件分数。

以上是关于PHP 电子邮件发送密件抄送的主要内容,如果未能解决你的问题,请参考以下文章

梨邮件功能密件抄送不会发送

如何使用mailgun php API仅将邮件发送到密件抄送? [复制]

使用 swiftmailer 密件抄送多个地址

PHPMailer 或 php 邮件功能 - 显示密件抄送地址

通过密件抄送发送邮件时 MailCore 中的错误

无法通过 Mandrill 发送密件抄送电子邮件(通过 Laravel)