Rails,将邮件发送到带有重音字符的地址

时间:2012-07-11 10:33:51

标签: ruby-on-rails utf-8 actionmailer street-address

我通过Rails,ActionMailer,1.9 Ruby和rails 3.0发送电子邮件

一切都很好,我在主题行和正文中发送带有重音字符的电子邮件,没有问题。我的charset默认值是UTF-8。

然而,当我尝试向包含重音字符的地址发送电子邮件时,它失败了。我首先得到的错误是电子邮件地址无效,需要完全合格。

为了解决这个问题,我需要以“”“'格式指定电子邮件地址。

然而它现在正在发送,但是邮件客户端上的地址中的字符显示为=?UTF-8?Q?....这是正确的,Rails正确地将我的UTF8地址编码到我的标题中

BUT

我的邮件客户端在其显示中没有识别出这一点,因此它会在屏幕上呈现所有乱码。在实际文本中出现乱码=?UTF-8?Q?....出现在客户端的“收件人”字段中。

编码为UTF8等。字符集为UTF8,传输编码可引用。

我错过了什么?它正在努力!

另外,作为测试,我从我的mac邮件客户端发送一封电子邮件到一个带有重音字符的地址。这在我的客户端呈现得很好,但是标题完全不同......因为在charset中是一个iso,传输编码是base64 ....所以我想我需要以某种方式更改actionmailer来编码我的邮件不同?即使用iso和base64编码让它发挥得很好?

我试过这个,但无济于事。我要么做错了要么完全忽略了这一点?从readong各种论坛和网站,我需要以某种方式编码头字段,但我找不到答案,我需要告诉我究竟是什么编码,更具体地说,我如何在Rails中做到这一点?

请帮忙! : - )

2 个答案:

答案 0 :(得分:1)

最后解决了这个问题,如果你用引号包装电子邮件的本地部分,并保持域名部分不加引号,那就可以了。好像Mailer正在编码完整的电子邮件地址,如果你不用引号括起来,因此会将编码分解为服务器。

e.g。 somébody@here.com不会工作

在哪里 “somébody”@ where.com将会工作

通过罚款路线并在所有客户中显示良好。

答案 1 :(得分:0)

目前并非所有邮件服务器都支持UTF-8个电子邮件地址(又名SMTPUTF8),他们中的很多人都会做疯狂的事情(甚至是标题的内容错误)。您是否可以检查以确保您的编码标头一直通过邮件服务器并且没有被删除?

MTA必须支持RFC6530才能支持UTF-8地址,因此可能不是您的应用程序错误。