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

Posted

技术标签:

【中文标题】无法通过 Mandrill 发送密件抄送电子邮件(通过 Laravel)【英文标题】:Can't send BCC emails through Mandrill (via Laravel) 【发布时间】:2014-09-30 22:12:15 【问题描述】:

我无法使用密件抄送通过 Laravel 中的 Mandrill 插件向用户发送电子邮件。我可以将电子邮件“发送到”这些地址,如下所示:

Mail::send('emails.coach_invite', $data, function($message) use ($coach, $emails) 
  foreach ($emails as $email) 
    $message->to($email);
  

  $message->subject($coach->first_name.' '.$coach->last_name.' has invited you to try Nudge!');
);

这很好用。但是,如果我尝试密件抄送相同的用户:

Mail::send('emails.coach_invite', $data, function($message) use ($coach, $emails) 
  foreach ($emails as $email) 
    $message->bcc($email);
  

  $message->subject($coach->first_name.' '.$coach->last_name.' has invited you to try Nudge!');
);

什么都没有发生。 Mandrill 甚至不承认请求的到来。任何想法为什么这不起作用?如果有帮助,这是我的原始电子邮件标题:

Message-ID: <688aa904847640c9ff694521ccb85ee5@nudge-api.app>
Date: Thu, 07 Aug 2014 11:15:35 -0400
Subject: Coach McTest would like to be your Coach on Nudge!
From: Nudge Info <info@nudgeyourself.com>
Bcc: Chris Garson <chris@nudgeyourself.com>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable

【问题讨论】:

【参考方案1】:

我可以确认,在 Mandrill 中,向密件抄送用户发送电子邮件并没有像预期的那样工作。

发送所需内容的最简单方法(将一封电子邮件发送到多个地址,每个收件人只能在递送列表中看到自己的姓名)是将X-MC-PreserveRecipients 标头设置为 false,然后使用到字段而不是密件抄送。

这将发送电子邮件,就好像它是单独发送给每个收件人一样,而不是作为一个群组电子邮件 - 没有人会知道还有谁发送了这封电子邮件。

以下是使用您的示例在 Laravel 中执行此操作的方法:

Mail::send('emails.coach_invite', $data, function($message) use ($coach, $emails) 

    foreach ($emails as $email) 
        $message->to($email);
    

    $message->subject($coach->first_name.' '.$coach->last_name.' has invited you to try Nudge!');

    $headers = $message->getHeaders();
    $headers->addTextHeader('X-MC-PreserveRecipients', 'false');
);

请注意,我使用 $message-&gt;to() 来处理电子邮件,然后添加设置为 false 的 X-MC-PreserveRecipients 标头。

【讨论】:

谢谢!非常好!【参考方案2】:

使用 X-MC-BccAddress 应该可以完成这项工作。不过,您只能使用一个密件抄送地址。

见https://mandrill.zendesk.com/hc/en-us/articles/205582117-Using-SMTP-Headers-to-customize-your-messages

【讨论】:

【参考方案3】:

我以抄送和密送两种方式为我工作。

参考文档:https://mandrill.zendesk.com/hc/en-us/articles/205582117-Using-SMTP-Headers-to-customize-your-messages

搜索关键字:X-MC-PreserveRecipients

    $headers = $message->getHeaders();
    $headers->addTextHeader('X-MC-PreserveRecipients', true);

【讨论】:

以上是关于无法通过 Mandrill 发送密件抄送电子邮件(通过 Laravel)的主要内容,如果未能解决你的问题,请参考以下文章

Mandrill 规则将密件抄送电子邮件发送给另一个收件人

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

PHP 电子邮件发送密件抄送

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

在 django 中向密件抄送和抄送发送电子邮件

使用 swiftmailer 密件抄送多个地址