【问题标题】:Ruby, how to correctly decode mails with MIME multipart?Ruby,如何使用 MIME 多部分正确解码邮件?
【发布时间】:2011-06-12 07:05:37
【问题描述】:

我正在尝试编写一个系统,该系统可以从 gmail 中提取邮件并获取 Ruby 中的内容。 (使用 imap 或 pop)
据我所知,有 'ruby-gmail'、'mail'(较新版本的 tmail)和 'action mailer' 可能会帮助我做到这一点。

我现在正在尝试“邮件”和“ruby-gmail”,我使用解码后的函数如下:

gmail.inbox.emails[0].body.decoded

但有些邮件可以正确解码,但有些则不能。
解码后的邮件输出如下:

This is MIME multipart 6.
--__=_Part_Boundary_002_310696381.907173471
Content-Type: text/plain;
    charset="big5"
Content-Transfer-Encoding: quoted-printable

=AE=BC=A5=BF=A7A=A6n,
.......(some encoded content)

对于其他一些邮件,Content-Transfer-Encoding 是 base64。

有没有更好的方法来正确解码邮件?
或者我只需要阅读邮件,获取编码部分, 并使用 Base64.decode64 或 unpack.("M") 来解码邮件?

【问题讨论】:

    标签: ruby-on-rails ruby imap mime


    【解决方案1】:

    我不知道“gmail”gem,但“mail”一个很好用。类似的东西

    require 'mail'
    mail = Mail.new(mail_text)
    mail.parts[0].body.decoded
    

    应该可以(其他部分使用 'n' 而不是 0)

    还要注意它可能是一个附件,所以你需要mail.attachments[0].decoded

    【讨论】:

    • 感谢您的帮助!我发现为什么输出看起来很奇怪!这是因为原始邮件是中文而不是英文。我需要的是 ascii 和 unicode 解码器,而不是 MIME 解码器。感谢您的帮助!
    • 不要在多部分消息上尝试mail.body.decode,因为它不起作用。之前用 multipart 测试过吗?
    猜你喜欢
    • 2011-11-10
    • 2011-12-15
    • 2016-10-05
    • 2019-10-21
    • 2015-07-12
    • 2014-05-04
    • 2021-01-11
    • 2020-06-30
    • 2018-02-17
    相关资源
    最近更新 更多