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
(已编辑电子邮件地址)。
我正在使用 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
(已编辑电子邮件地址)。