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

lin*_*ngy 2 ruby mime imap ruby-on-rails

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

我现在正在尝试'mail'和'ruby-gmail',我使用这样的解码函数:

gmail.inbox.emails[0].body.decoded
Run Code Online (Sandbox Code Playgroud)

但有些邮件可以正确解码,但有些邮件不能.
解码邮件的输出如下所示:

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)
Run Code Online (Sandbox Code Playgroud)

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

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

Lui*_*uis 7

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

require 'mail'
mail = Mail.new(mail_text)
mail.parts[0].body.decoded
Run Code Online (Sandbox Code Playgroud)

应该工作(使用'n'而不是0为其他部分)

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