我正在使用SendGrid
从我的应用程序发送电子邮件。我想与sender name
一起发送sender email
,例如from: 'Maxcreet <contact@maxcreet.com>'
使用Letter Opener
和MailTrap
可以正常工作,但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
我已经使用mail[:from]
检查了puts
的值,它给出了以下值:
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
3以上对我来说似乎还可以,但是当我在其中使用其中任何一个
email.from = SendGrid::Email.new(email: mail[:from].addrs.first.address)
它没有发送我的电子邮件,甚至在sendgrid仪表板中也找不到我的电子邮件。
下面的this也尝试了email.fromname
,但这甚至不起作用。
答案 0 :(得分:3)
SendGrid的ruby API具有名为name
而不是fromname
的选项。
因此以下内容可以解决您的问题。
email.from = SendGrid::Email.new(
email: mail[:from].addrs.first.address,
name: mail[:from].addrs.first.name
)
我从this doc开始尝试了这一点。
答案 1 :(得分:0)
看起来您正在混合宝石或物体。 SendGrid::Email.new
仅需要一个from
字符串,并且可能支持一个name
字符串。您正在使用mail[:from]
从mail[:from].addrs.first.address
哈希中提取地址,但是需要提供名称作为唯一的密钥。
在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
对象提取友好名称/显示名称。