2013-02-03 63 views
2

我正在使用nu7'hatch/gmail gem進入我的Gmail帳戶並收到電子郵件。我可以搶DateSubject正確的,但對於FromBody我也得到這些字符,我不能簡單地獲取文本:Rails gmail gem:獲取發件人和郵件正文的正確地址

來源:

--- - !ruby/struct:Net::IMAP::Address name: [NAME_OF_SENDER_IS_HERE] route: mailbox: [USERNAME_OF_SENDER_IS_HERE] host: gmail.com

身體: --- !ruby/object:Mail::Body boundary: preamble: epilogue: charset: US-ASCII part_sort_order: - text/plain - text/enriched - text/html parts: !ruby/array:Mail::PartsList [] raw_source: [MESSAGE_GOES_HERE] encoding: 7bit

是否有任何方法可以正確獲取From和Body文本,而不需要這些字符?

回答

3

我發現的解決方法是使用Net :: IMAP。

請注意,從From需要的電子郵件已完成mail.from[0]

imap = Net::IMAP.new('imap.gmail.com', 993, usessl = true, certs = nil, verify = false) 
imap.login(USERNAME, PASSWORD) 
imap.select('Inbox') 

imap.search(["ALL"]).each do |message_id| 
    emails = imap.fetch(message_id,'RFC822')[0].attr['RFC822'] 
    mail = Mail.read_from_string emails 
    @email = Email.create(:subject => mail.subject, :message => mail.body.decoded, :sender => mail.from[0], :date => mail.date) 
end 

imap.disconnect 
0

你可以做類似

此行返回完整的結構:

gmail.inbox.find(subject: "yoursubject").first.envelope 

...的結構,您可以:

gmail.inbox.find(subject: "yoursubject").first.envelope.reply_to[0].mailbox 
gmail.inbox.find(subject: "yoursubject").first.envelope.reply_to[0].name 
gmail.inbox.find(subject: "yoursubject").first.envelope.reply_to[0].host 

...和然後做你的操作組合成一個單一的字符串,將被評估爲:

name <[email protected]> 
相關問題