我正在使用mailmain gem获取pop3邮件。此库使用mail gem来分解邮件正文和附件。我可以在pry命令行中获取附件,如下所示:
14: Mailman.config.rails_root = '../'
15:
16: Mailman::Application.run do
17: to 'expenses@surveymonkey.com' do
18: require 'debugger'; debugger
=> 19: print message
20: end
21: end
我可以像这样获得个人附件
[1] pry(#<Mailman::Router>)> a = message.attachments[0]
=> #<Mail::Part:70339703566060, Multipart: false, Headers: <Content-Type: image/jpeg; name="70s-Jump-Suit.jpeg">, <Content-Transfer-Encoding: base64>, <Content-Disposition: attachment; filename="70s-Jump-Suit.jpeg"; size=38412; creation-date="Tue, 26 Jun 2012 22:11:10 GMT"; modification-date="Tue, 26 Jun 2012 22:11:10 GMT">, <Content-Description: 70s-Jump-Suit.jpeg>>
所以,问题是,如何保存这些数据?
我与this method关系密切,但我无法妥善保存。
我尝过这样的东西
[2] pry(#<Mailman::Router>)> File.open( '/tmp/output.jpg', "w+b", 0644 ) { |f| f.write a.raw_source }
但输出变得很糟糕。
我对电子邮件编码知之甚少,无法让它发挥作用。
提前致谢!
答案 0 :(得分:3)
啊,我们走了:
# tmail is now a Mail object
tmail.attachments.each do |tattch|
fn = tattch.filename
begin
File.open( fn, "w+b", 0644 ) { |f| f.write tattch.body.decoded }
rescue Exception => e
logger.error "Unable to save data for #{fn} because #{e.message}"
end
end