dcparker / ruby-gmail

A Rubyesque interface to Gmail. Connect to Gmail via IMAP and manipulate emails and labels. Send email with your Gmail account via SMTP. Includes full support for parsing and generating MIME messages.
http://dcparker.github.com/ruby-gmail
792 stars 123 forks source link

NoMethodError: undefined method `message' #39

Open macedo opened 12 years ago

macedo commented 12 years ago

I get this error when i try to download attachments from any email. I've alredy try ruby 1.9.2 and 1.8.7.

novito commented 12 years ago

I am having the same problem under ruby 1.9.3

myobie commented 11 years ago

Can you post a code example? And can you upgrade and try the newest gem version?

refriedchicken commented 11 years ago

I am also having this issue on Ruby 1.9.3 using 0.3.0.

folder = "/home/refriedchicken/downloads" Gmail.new('username','password') do |g| g.inbox.emails(:unread, :from => "noreply@dropbox.com").each do |e| if !e.message.attachments.empty? e.message.save_attachments_to(folder) e.mark(:read) e.archive! end end end

NoMethodError: undefined method message' for #<Mail::Message:0x0000000273f800> from /home/refriedchicken/.rvm/gems/ruby-1.9.3-p374/gems/mail-2.5.3/lib/mail/message.rb:1289:inmethod_missing' from /home/refriedchicken/.rvm/gems/ruby-1.9.3-p374/gems/ruby-gmail-0.3.0/lib/gmail/message.rb:101:in method_missing' from (irb):30:inblock (2 levels) in irb_binding' from (irb):29:in each' from (irb):29:inblock in irb_binding' from /home/refriedchicken/.rvm/gems/ruby-1.9.3-p374/gems/ruby-gmail-0.3.0/lib/gmail.rb:24:in initialize' from (irb):28:innew' from (irb):28 from /home/refriedchicken/.rvm/rubies/ruby-1.9.3-p374/bin/irb:13:in `

'

marcusfloriano commented 11 years ago

Hi,

I solved with code below. The ruby version is ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.2.0]

File.open(File.join("imgs", file.filename), "w+b", 0644 ) { |f| f.write file.body.decoded }

Thank's

ghost commented 11 years ago

I am too face the same problem. I have using ruby 2.0.0-p247 and ruby-gmail-0.3.0. Any work around?

rcho commented 10 years ago

I got the same problem, it appears the save_attachments_to method doesnt exist or has been deprecated by the mail gem. I was able to handle my attachments like so

message.attachments.each do |attachment| File.open("/home/rcho/Downloads/#{attachment.filename}", "w+b", 0644) { |f| f.write attachment.body.decoded } end

source: https://github.com/mikel/mail#testing-and-extracting-attachments

curpeng commented 10 years ago

Seems that in version 0.3.0 author made method 'message' private. At master I see that this method is public, so I assume that it was done mistakenly. For fast fixing this we can use send: g.inbox.emails(:unread, :from => "noreply@dropbox.com").each do |e| e.send(:message).save_attachments_to(folder) end

Dreyfuzz commented 10 years ago

@rcho's method doesn't work for me, which makes sense since it's still relying on the message method. I had no better results using emails.send(:message).save_attachments_to(folder). I get undefined method `save_attachments_to' for #Mail::Message:0x00000101469608

myobie commented 10 years ago

@Dreyfuzz @dolgishev I've merged a PR that updated the README. Can you try to save the attachments manually?

The #save_attachments_to method was very out of date and the new example should work.