# Retrieve Gmail using Ruby

**URL:** <https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180>\
**Category:** Rails\
**Created:** [April 19, 2010, 12:48pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180 "2010-04-19T12:48:25Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![shreyas12](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b4bc9f/32.png) [@shreyas12](https://www.ruby-forum.com/u/shreyas12)\
**Post date:** [April 19, 2010, 12:48pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180/1 "2010-04-19T12:48:25Z")

</div>

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](http://mail.isp.com)’  
pop.start ‘removed\_email\_address@domain.invalid’, ‘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!

---

<div class="post-metadata">

**Author:** ![shreyas12](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b4bc9f/32.png) [@shreyas12](https://www.ruby-forum.com/u/shreyas12)\
**Post date:** [April 19, 2010, 1:11pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180/2 "2010-04-19T13:11:11Z")

</div>

Have you tried

> pop = Net::POP3.new ‘[pop.gmail.com](http://pop.gmail.com)’

Christophe

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

---

<div class="post-metadata">

**Author:** ![shreyas12](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b4bc9f/32.png) [@shreyas12](https://www.ruby-forum.com/u/shreyas12)\
**Post date:** [April 19, 2010, 2:10pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180/3 "2010-04-19T14:10:03Z")

</div>

Christophe D. wrote:

> Have you tried
> 
> > pop = Net::POP3.new ‘[pop.gmail.com](http://pop.gmail.com)’
> 
> Christophe
> 
> Le 19 avr. 2010 ï¿½ 12:48, Shreyas S. a ï¿½crit :

Tried it.Ain’t working.

---

<div class="post-metadata">

**Author:** ![shreyas12](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b4bc9f/32.png) [@shreyas12](https://www.ruby-forum.com/u/shreyas12)\
**Post date:** [April 19, 2010, 2:19pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180/4 "2010-04-19T14:19:40Z")

</div>

Try SSL?

> **[Read Gmail messages on other email clients using POP - Gmail Help](https://support.google.com/mail/answer/7104828?hl=en&visit_id=638235308647146564-3397728062&rd=3)**
>
> You can open your messages from Gmail in other mail clients that support POP, like Microsoft Outlook.
> Step 1: Make sure POP is the best way to read your emails
> IMAP and POP are both ways to rea

Larry

---

<div class="post-metadata">

**Author:** ![shreyas12](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b4bc9f/32.png) [@shreyas12](https://www.ruby-forum.com/u/shreyas12)\
**Post date:** [April 19, 2010, 7:01pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180/5 "2010-04-19T19:01:16Z")

</div>

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

> **[GitHub - look/fetcher: download email from POP3 or IMAP and do stuff with it.](https://github.com/look/fetcher)**
>
> download email from POP3 or IMAP and do stuff with it. - GitHub - look/fetcher: download email from POP3 or IMAP and do stuff with it.

---

<div class="post-metadata">

**Author:** ![shreyas12](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/b4bc9f/32.png) [@shreyas12](https://www.ruby-forum.com/u/shreyas12)\
**Post date:** [April 19, 2010, 10:24pm UTC](https://www.ruby-forum.com/t/retrieve-gmail-using-ruby/187180/6 "2010-04-19T22:24:26Z")

</div>

=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](http://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.
