2

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

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

但是,当我尝试向包含重音字符的地址发送电子邮件时,它失败了。我首先遇到了关于电子邮件地址无效并且需要完全限定的错误。

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

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

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

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

我错过了什么?它让我头疼!

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

我试过这个但无济于事。我要么做错了,要么完全错过了这里的重点?从阅读各种论坛和网站,我需要以某种方式对标头字段进行编码,但我找不到我需要的答案,我需要确切地告诉我该编码是什么,更具体地说,我如何在 Rails 中做到这一点?

请帮忙!:-)

4

2 回答 2

1

终于解决了这个问题,如果您将电子邮件的本地部分用引号括起来,而将域部分不加引号,它会很有效。如果您不使用引号括起来,似乎 Mailer 正在对完整的电子邮件地址进行编码,因此会将编码中断到服务器。

例如 someébody@here.com 不会工作

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

路线通过罚款并在所有客户端显示正常。

于 2012-07-18T13:00:23.273 回答
0

目前并不是所有的邮件服务器都支持UTF-8电子邮件地址(aka SMTPUTF8 ),其中很多会做一些疯狂的事情(甚至是标题的内容格式错误)。您能否检查以确保您的编码标头一直通过邮件服务器并且没有被撕掉?

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

于 2012-07-11T10:39:48.143 回答