【问题标题】:Rails, sending mail to an address with accented charactersRails,将邮件发送到带有重音字符的地址
【发布时间】:2012-07-10 23:01:54
【问题描述】:

我通过 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 中做到这一点?

请帮忙! :-)

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 您好约翰,感谢您的回复。既然您这么说,电子邮件标头就消失了:如果我在客户端查看 hte 标头,它们是这样的:dèèèè@.... 在我看来,编码是正确的,但也许它的只是没有被正确解析或管理?正如你所说的 SMTP 服务器本身可能是问题,会解释很多,虽然没有解释为什么主题标头是好的和正文,但只是 To 标头电子邮件对我不起作用?或者是吗? TO: Header 看起来像这样,=?UTF-8?Q?=22=22_?=
    【解决方案2】:

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

    例如 somébody@here.com 不起作用

    作为 "somébody"@here.com 可以工作

    通过良好的路由并在所有客户端中正常显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-14
      • 2016-02-28
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      相关资源
      最近更新 更多