使用SendGrid发送邮件时如何附带发件人姓名 - Rails

4

我正在使用 SendGrid 来从应用程序发送邮件。我想一起发送 发件人名称发件人电子邮件,例如: from: 'Maxcreet <contact@maxcreet.com>'

在使用 Letter OpenerMailTrap 时工作正常,但 SendGrid 只显示发件人电子邮件。

以下是我的 SendGrid 函数以发送邮件。

def deliver!(mail)
  email.from = SendGrid::Email.new(email: mail[:from].addrs.first.address)
  email.subject = mail.subject
  email.add_personalization(build_personalization(mail))
  build_content(mail)
  send!(email)
end

我已经使用puts检查了mail[:from]的值,得到以下结果:
puts mail[:from]                      => Maxcreet <support@maxcreet.com>
puts mail[:from].addrs                => Maxcreet <support@maxcreet.com>
puts mail[:from].addrs.first          => Maxcreet <support@maxcreet.com>
puts mail[:from].addrs.first.address  => support@maxcreet.com

上述三种方法对我来说看起来都不错,但当我在其中任何一种方法中使用时,会出现以下问题:
email.from = SendGrid::Email.new(email: mail[:from].addrs.first.address)

无法发送我的邮件,甚至在sendgrid控制台中也找不到我的邮件。

根据此链接的建议,我尝试使用email.fromname,但这也没有起效。

2个回答

4
SendGrid的Ruby API中有一个名为name的选项,而非fromname。因此,以下代码应该解决您的问题。
email.from = SendGrid::Email.new(
  email: mail[:from].addrs.first.address, 
  name:  mail[:from].addrs.first.name
)

我通过尝试这个文档得出了这个结论。


0

看起来你正在混合使用宝石或对象。SendGrid::Email.new只需要一个from字符串,并且可能支持一个name字符串。你正在使用mail[:from].addrs.first.address从你的mail[:from]哈希中提取地址,但你需要提供名称作为一个不同的键。

SendGrid Ruby gem的“厨房水槽”示例中,他们没有在From参数上显示name,但在personalization上显示。

尝试:email.from = SendGrid::Email.new(email: 'support@maxcreet.com', name: 'Maxcreet'))

或者动态地:email.from = SendGrid::Email.new(email: mail[:from].addrs.first.address, name: mail[:from].addrs.first.name))

如果你的mail对象识别了该键。

否则,您需要查看您的mail gem文档,了解如何从mail[:from].addrs对象中提取友好/显示名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接