Undefined method `mails' for #<Net::POPMail 1> (NoMethodErro

Hello,
I’m trying to do a method to get mail via pop3 server.
I created the following script but i receive this message during
executio :

testmail.rb:12: undefined method `mails’ for #<Net::POPMail 1>
(NoMethodError)

#!/usr/bin/env ruby
require ‘net/pop’ # I renamed the file from pop.rb to pop_ssl.rb to
ensure I was requiring the correct version

username = ‘[email protected]
password = ‘pass’

#Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE)
conn = Net::POP3.new(‘pop.host.com’,110)
conn.start(username,password)

conn.mails.each do |pop|
msg = pop.mails[0]

Print the ‘From:’ header line

puts msg.header.split("\r\n").grep(/^From: /)

Put message to $stdout (by calling <<)

puts “\nFull message:\n”
msg.all($stdout)
end

maybe a lib problem ?

thx for your answer…

There’s a mistake in your code. conn.mails return an array of the mails
on the server, i.e an array of Net::POPMail objects. The mails method,
instead, is a method of class Net::POP3. To make your code work, simply
substitute the pop parameter of the block with msg and remove the first
line of the block:

conn.mails.each do |msg|

Print the ‘From:’ header line

puts msg.header.split("\r\n").grep(/^From: /)

Put message to $stdout (by calling <<)

puts “\nFull message:\n”
msg.all($stdout)
end

You can also use the each (or each_mail) methods of Net::POPMail, which
also iterate on the mails:

conn.each_mail do |msg|

Print the ‘From:’ header line

puts msg.header.split("\r\n").grep(/^From: /)

Put message to $stdout (by calling <<)

puts “\nFull message:\n”
msg.all($stdout)
end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs