3

mailmaingemを使用してpop3メールを取得しています。このライブラリは、メール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>>

したがって、問題は、このデータをどのように保存するかということです。

私はこの方法に近づいていますが、適切に保存することができません。

そして私はこのようなものを試しました

[2] pry(#<Mailman::Router>)> File.open( '/tmp/output.jpg', "w+b", 0644 ) { |f| f.write a.raw_source }

しかし、出力は失敗します。

これを機能させるには、電子メールのエンコードについて十分に理解していません。

前もって感謝します!

4

1 に答える 1

3

ああ、ここに行きます:

http://cbpowell.wordpress.com/2011/01/17/saving-attachments-with-ruby-1-9-2-rails-3-and-the-mail-gem/

# 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
于 2012-06-27T00:52:11.173 に答える