使用 Mandrill 和 Rails 的多个收件人

Posted

技术标签:

【中文标题】使用 Mandrill 和 Rails 的多个收件人【英文标题】:Multiple recipients using Mandrill and Rails 【发布时间】:2016-04-29 06:55:32 【问题描述】:

我正在使用 ruby​​ 通过 Mandrill 发送交易电子邮件。 作为我产品的一部分,我希望能够向两个收件人发送相同的电子邮件,并让他们看到彼此的电子邮件地址。 (就像两个人之间的介绍邮件)。

所以我用两封电子邮件填写了他的“收件人”字段,在我的仪表板上似乎两封电子邮件都已发送。 但不幸的是,只有一个收件人收到了邮件,第二个收件人的详细信息被隐藏了。

总之,我有两个问题:

    只有一位收件人收到邮件

    隐藏第二个收件人的详细信息。

【问题讨论】:

【参考方案1】:

如果您希望两个收件人都能看到对方,您可以在 to 选项中传递一组电子邮件。

如果您确实希望他们中的任何一个看到对方,您可以在用户的​​循环中发送所述电子邮件。

如果使用ActionMailer,可以这样做:

mail(
  to: ['person1@gmail.com', 'person2@gmail.com']
)

或者在循环中:

[user1, user2].each do |user|
  UserMailer.some_email(user).deliver_now
end

mail(
  to: user.email
)

发布您的代码,我知道您的问题可能是什么。请记住,ActionMailer 类中的方法应该只返回 mail(),并且不能在该方法内部循环。

tldr:在邮件程序之外做所有与电子邮件无关的事情,将必要的数据作为参数传递给方法,以mail() 调用结束方法。

【讨论】:

是的,我得到了那个部分。实际上,这个谜团已由 Mandrill 支持团队解决。【参考方案2】:

我联系了 Mandrill 支持,他们是这样回答的:

如果您想为您发送的所有消息全局启用此选项,那么您需要确保您拥有 “发送到多个地址时公开收件人列表” 在您的发送默认值中启用选项。

如果您不想在全局范围内进行更改,而是希望启用它 对于单个消息,您需要使用 X-MC-PreserveRecipients(SMTP 标头)或 preserve_recipients(API 参数),并将其设置为 'true'。

如果您将此选项设置为 true,我们会将收件人列表公开给 当您从一个典型的网站发送邮件时,您会看到彼此 电子邮件客户端程序。

成功了!

【讨论】:

以上是关于使用 Mandrill 和 Rails 的多个收件人的主要内容,如果未能解决你的问题,请参考以下文章

Mandrill 通过 REST API 作为单独的消息发送给多个人

Mandrill API - 获取电子邮件的所有收件人

抄送收件人的 Mandrill 合并变量不起作用

将多个收件人电子邮件和姓名附加到 EmailMultiAlternatives

通过 Rails 将对象作为变量发送到 Mandrill

使用 ActionMailer 在 Rails 中发送给多个收件人