如果“收件人”字段中有逗号,ActionMailer无法正确发送电子邮件

8

我的一封邮件看起来像这样:

mail(:from => "Support Team <support@email.com>",
     :to => "#{@user.alias} <#{@user.email}>",
     :subject => 'Verification Email')

然而,如果用户的别名为“Foobar, Bar”,则电子邮件实际上会发送到:Foobar, Bar <foobar@gmail.com>。即发送给 foobar 和 composer。

我认为问题在于“Foobar, Bar”中的逗号。这需要进行转义或其他处理吗?

我的邮件客户端是否应该像这样:

mail(:from => "Support Team <support@email.com>",
     :to => @user.email,
     :subject => 'Verification Email')

非常感谢您提出这个问题。我曾经在类似的问题上遇到了困难。 再次感谢。 - Rajesh Paul
1个回答

12

在电子邮件头的名称部分中,空格(可能还包括逗号)必须放在引号内。

引用名称有时是可选的,但从不被禁止,因此为简单起见,请尝试:

mail(:from => "\"Support Team\" <support@email.com>",
     :to => "\"#{@user.alias}\" <#{@user.email}>",
     :subject => 'Verification Email')

编辑 为了完整起见,我已经在from中添加了转义引号,因为它们也是必需的。


如果只是使用 :from => support@email.com:to => @user.email,有什么好处或坏处?这会以任何方式影响邮件的投递吗? - Christian Fazzini
2
添加名称不会影响投递(除非以无效的方式执行并损坏消息)。这是个人选择。对于“收件人”地址,只有在您希望帮助收件人识别彼此(或在审核已发送项目时帮助您)时才使用名称才相关。收到自己的名称填写不正确的消息可能很烦人,因此最好在“To”中使用电子邮件地址,以便全面考虑。在“发件人”中包含一个名称可帮助收件人知道您是谁。通常它看起来比仅显示电子邮件地址更好,因此,如果您可以在“发件人”中包含您的名称,那么我会建议这样做。 - SimonMayer
谢谢伙计。很棒的解决方案。 - Rajesh Paul

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