【问题标题】:rails 3 mail gem please help!rails 3 mail gem 请帮忙!
【发布时间】:2023-04-09 21:08:01
【问题描述】:

好的,我有 2 封电子邮件,其中一封在主题和正文中都有日文和英文,另一封似乎在 iso-8859-1 中

当我执行 email.subject 时,它会在我的控制台和浏览器中正确显示,并且在我的数据库 (mongodb) 中保存得很好。所以我认为它正确地转换为 utf-8。

问题是如何让 text_body 和 html_body 做同样的事情?

如果我尝试将 email.html_part.decoded 保存到数据库中,我会收到一个字符串不是 utf-8 错误。另外,如果我执行 email.html_part.decoded.force_encoding("UTF-8") 我仍然会收到此错误。 如果我只是 email.html_part 它可以让我保存到数据库中,但在查看时看起来不正确。

这样出来

内容类型:文本/纯文本; 字符集=iso-8859-1 内容传输编码:quoted-printable 内容 ID:

=0D 检查!=0D =0D 至:joe@hotmail.com=0D 主题:在豪华的阿拉斯加游艇假期中节省近 =A32,000! =0D 发件人:canada@travel.co.uk=0D 日期:2011 年 5 月 10 日星期二 05:39:24 -0500=0D =0D =0D =0D =0D =0D =0D

日本人就这样出来了

内容类型:文本/纯文本; 字符集=iso-2022-jp 内容传输编码:7bit 内容 ID:

发件人:joe@hotmail.com 至:sales@domain.com 主题:($B%Q%s$r?)$Y$J$$!#(B)“我不会吃面包” 日期:2011 年 5 月 10 日星期二 21:13:55 +0000

否定词是通过动词变化形成的。例如,Pan o taberu ($B%Q%s$r?)$Y$k!#(B) “我会吃面包”或“我吃面包”变成 Pan o tabenai ($B%Q%s$ r?)$Y$J$$!#(B) “我不吃面包”或“我不吃面包”。简单的否定形式实际上是 i-形容词(见下文)并因此而变化,例如Pan o tabenakatta ($B%Q%s$r?)$Y$J$+$C$?!#(B) “我没吃面包”。

我正在使用 rails 3.0.7 和 ruby​​ 1.9.2-p180

请问有人可以帮忙吗? 谢谢瑞克

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 email encoding


    【解决方案1】:

    第一封邮件是“quoted-printable”,您可以使用String#unpack 解压:

    str = "=0D check!=0D =0D To: joe@hotmail.com=0D Subject: Save almost =A32,000 on a luxury Alaskan yacht holiday! =0D From: canada@travel.co.uk=0D Date: Tue, 10 May 2011 05:39:24 -0500=0D =0D =0D =0D =0D =0D =0D".unpack('M').first
    => "\r check!\r \r To: joe@hotmail.com\r Subject: Save almost \xA32,000 on a luxury Alaskan yacht holiday! \r From: canada@travel.co.uk\r Date: Tue, 10 May 2011 05:39:24 -0500\r \r \r \r \r \r \r"
    

    您想将其声明为 iso-8859-1 并将其转换为 utf-8:

    str.force_encoding('iso-8859-1').encode('utf-8')
    "\r check!\r \r To: joe@hotmail.com\r Subject: Save almost £2,000 on a luxury Alaskan yacht holiday! \r From: canada@travel.co.uk\r Date: Tue, 10 May 2011 05:39:24 -0500\r \r \r \r \r \r \r"
    

    您可能必须对第二封邮件执行相同的操作。

    【讨论】:

    • 谢谢 有没有办法从 email.html_body 自动获取强制编码? IE 。 force_encoding(email.htm_body.ecoding?).encode('utf-8')
    • 检查是否有可能直接从邮件对象获取编码。
    猜你喜欢
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多