Retrieve Gmail using Ruby

I need to retrieve emails from my Gmail account using Ruby on Rails. I’m
currently using this piece of code, but it gives me a timeout error
everytime.

require ‘net/pop’

pop = Net::POP3.new ‘mail.isp.com
pop.start ‘[email protected]’, ‘password’

if pop.mails.empty?
puts “No mail.”
else
puts “You have #{pop.mails.length} new messages.”
puts “Downloading…”

pop.mails.each_with_index do|m,i|
File.open( “inbox/#{i}”, ‘w+’ ) do|f|
f.write m.pop
end

m.delete
end
end

This is the error I recieve

/usr/lib/ruby/1.8/timeout.rb:60:in new': execution expired (Timeout::Error) from /usr/lib/ruby/1.8/net/protocol.rb:206:in old_open’
from /usr/lib/ruby/1.8/net/protocol.rb:206:in old_open' from /usr/lib/ruby/1.8/net/pop.rb:438:in do_start’
from /usr/lib/ruby/1.8/net/pop.rb:432:in `start’
from script/mail.rb:4

Any help will be appreciated!

Have you tried

pop = Net::POP3.new ‘pop.gmail.com

Christophe

Le 19 avr. 2010 à 12:48, Shreyas S. a écrit :

Christophe D. wrote:

Have you tried

pop = Net::POP3.new ‘pop.gmail.com

Christophe

Le 19 avr. 2010 � 12:48, Shreyas S. a �crit :

Tried it.Ain’t working.

Try SSL?

Larry

I’ve used Fetcher plugin for that. Worked for me

=begin
Tested with ruby 1.8.7 on a Debian machine, with my own gmail account.
ruby -rubygems “from name” “from email” “to name” “to email” “subject”
“body”
=end
require ‘net/smtp’
require ‘tlsmail’

Net::SMTP.enable_tls OpenSSL::SSL::VERIFY_NONE

$SERVER = ‘smtp.gmail.com
$PORT = ‘587’
$DOMAIN = ‘loclahost’#HELO domain
$USERNAME = ‘username’
$PASSWORD = ‘password’

from_name = ARGV[0]
from_email = ARGV[1]
to_name = ARGV[2]
to_email = ARGV[3]
subject = ARGV[4]
body = ARGV[5]

msg = <<EOF
From: #{from_name} <#{from_email}>
To: #{to_name} <#{to_email}>
Subject: #{subject}

#{body}
EOF

Net::SMTP.start( $SERVER, $PORT, $DOMAIN, $USERNAME,
$PASSWORD, :plain ) do |smtp|
smtp.sendmail msg, from_email, to_email
end

I use this to send email. maybe you can tweak it a bit to retrieve
emails.