2016-11-21 13 views
-1

私はruby Gmail gemを使用して、今後のメールを読むことにしています。私は正常に日付/件名/メールボックス/ホストを取得することができますが、私はemail.bodyからメール本文を抽出できませんでした。基本的には、最後にアクセスしたのは「最後の最初のタイトルの日付https://www.google.com」ですが、私は怒っています。ruby​​ gmail gemを使って電子メール本文を抽出するには?

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 

それは解決策がメール宝石/メール宝石質問から来ているので、宝石はMail宝石を使用しています

--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-- 
+0

日付、件名、残りは本文ではなく封筒の一部です。あなたの例は、[MIME](https://en.wikipedia.org/wiki/MIME)形式の有効な本文が抽出されたように見えます。おそらくあなたはMIMEをデコードする必要がありますか? –

答えて

0

Gmail返します。私は=に従う=>enter link description here

#!/usr/bin/ruby 
require 'gmail' 
USERNAME = '[email protected]' 
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 
関連する問題