Ruby,如何使用MIME multipart正确解码邮件?

时间:2011-01-20 07:59:00

标签: ruby-on-rails ruby imap mime

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

我现在正在尝试'mail'和'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或解压缩。(“M”)解码邮件?

1 个答案:

答案 0 :(得分:7)

我不知道'gmail'的宝石,但'mail'的效果非常好。像

这样的东西
require 'mail'
mail = Mail.new(mail_text)
mail.parts[0].body.decoded

应该有效(对其他部分使用'n'而不是0)

另请注意,它可能是附件,因此您需要mail.attachments[0].decoded