【问题标题】:How to extract email body using ruby gmail gem?如何使用 ruby​​ gmail gem 提取电子邮件正文?
【发布时间】:2017-04-05 01:24:57
【问题描述】:

我正在使用 ruby​​ Gmail gem 来阅读即将发送的电子邮件。我可以成功获取日期/主题/邮箱/主机,但我无法从 email.body 中提取电子邮件正文。基本上,我只想看到“上次访问的最后一个标题日期https://www.google.com”,但我正在咆哮。

def main
   gmail = Gmail.connect(USERNAME, PASSWORD)
   gmail.inbox.find(:unread).each do |email|
      puts email.body

   end
   gmail.logout
end

if __FILE__ == $PROGRAM_NAME
   main()
end

返回

--001a113d2dde4115020541d12a51
Content-Type: text/plain; charset=UTF-8

Last First
A Title
Date last accessed
https://www.google.com

--001a113d2dde4115020541d12a51
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div><span style=3D"font-size:16px">Last First</span></div=
><div><span style=3D"font-size:16px">A Title</span></div><div><div style=3D=
"font-size:12.8px"><span style=3D"font-size:16px">Date last accessed</span>=
<span style=3D"font-size:16px"><br></span><div><a href=3D"https://www.googl=
e.com" target=3D"_blank">https://www.google.com</a></div></div></div><div><=
br><br></div></div>

--001a113d2dde4115020541d12a51--

【问题讨论】:

  • 日期、主题和其余部分是信封的一部分,而不是正文。您的示例看起来像提取了 MIME 格式的有效正文。也许您需要解码 MIME?

标签: ruby email


【解决方案1】:

Gmail gem 使用 Mail gem 所以解决方案来自邮件 gem / mail gem questions。我关注 => enter link description here

#!/usr/bin/ruby
require 'gmail'
USERNAME = 'xxxxxxx@gmail.com'
PASSWORD = 'xxxxxxxx'

def main
    gmail = Gmail.connect(USERNAME, PASSWORD)
    gmail.inbox.find(:unread).each do |email|
        puts email.text_part ? email.text_part.body.decoded : nil   
        #puts email.html_part ? email.html_part.body.decoded : nil
    end
    gmail.logout
end

if __FILE__ == $PROGRAM_NAME
    main()
end

【讨论】:

    猜你喜欢
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2012-02-08
    • 2012-12-11
    • 2017-11-01
    • 2015-12-15
    相关资源
    最近更新 更多