Rails Ruby 中的 ActionMailer 在给定具有特殊字符的电子邮件地址时中断

ActionMailer in Ruby on Rails breaks when given an email address that has special characters

我正在使用 ActionMailer 发送电子邮件,在给定普通电子邮件地址时它可以工作,这是我的代码片段

logger = Logger.new('logfile.log')
logger.info(@user.email)
mail(
  charset: "UTF-8",
  to: @user.email,
  from: @from,
  subject: @subject
)

在日志中,它显示了带有特殊字符的电子邮件地址。 但后来我转到我的开发日志并在邮件对象中看到这个,其他一切都是正确的

To: =?UTF-8?B?w7FAw7EuY29tPg==?=

我试过用引号括起来并使用不同的格式,如下所示:

("\"#{@user.name}\" <#{@user.email}>")

转换为:

"name name" <test_ñ@yahoo.com>

这些也不走运,我只是得到了类似的乱码

=?UTF-8?Q?=22name_name=22_<test=5F=C3=B1@yahoo.com>?=

也尝试过使用"test_ñ"@yahoo.com

相同的结果:

=?UTF-8?Q?=22test=5F=C3=B1=22@yahoo.com>?=

我在这里错过了什么?它与编码配置有关吗?

这不是胡言乱语。那是 MIME 编码 (RFC 2047)。一切都很好。

您可以将该行粘贴到 MIME online decoder 中并确保它解码为 To: my_user@exampl.com(已编辑电子邮件地址)。