gem“mail”没有解码base64

时间:2015-12-19 11:39:11

标签: ruby email character-encoding

require "mail"

Mail.defaults do
  retriever_method :pop3, :address    => "pop.gmail.com",
                          :port       => 995,
                          :user_name  => 'example@gmail.com',
                          :password   => 'password',
                          :enable_ssl => true
end

email_first = Mail.first
puts email_first.body.decoded

显示:

  

- 001a1145b2922bebe405243ff864 Content-Type:text / plain; charset = UTF-8 Content-Transfer-Encoding:base64   KtCyIDE1LjAwLg0KDQoxMSDQvdC + 0Y / QsdGA0Y8gMjAxNSDQsy4sIDE0OjUzINC / 0L7Qu9GM0LfQ ...(多   的base64)...

为什么不解码为UTF-8?

1 个答案:

答案 0 :(得分:3)

邮件包含MIME multipart正文。这意味着,正文由多个部分组成(甚至可能嵌套),每个部分都可以包含不同编码的不同对象。

现在大多数邮件都是作为多部分邮件发送的,并且可以包含例如邮件。 HTML部分和明文部分。由于邮件宝石无法知道您想要哪些部件,因此它为您提供了一个API来自行枚举部件:

email_first = Mail.first
puts email_first.parts.first.decoded

要查找您最感兴趣的部分,可以在部件中使用所述的mimetype,例如

email_first.parts.first.mime_type
# => text/plain