2010-04-19 3 views
6

Мне нужно получить электронную почту из моей учетной записи gmail с помощью RoR.Получение электронной почты с использованием Ruby on Rails

require 'net/pop' 
Net::POP3.start('pop.gmail.com', 995, username, password) do |pop| 
    if pop.mails.empty? 
     puts 'No mail.' 
    else 
     #pop.each_mail do |mail| 
      #p mail.header 
      #p mail.pop 
      puts "Mails present" 
     #end 
    end 
end 

Я получаю ошибку тайм-аута.

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 

Как исправить это?

+0

Ваш счет принять соединение POP? – shingara

+0

Да POP включен. – Shreyas

+0

Можете ли вы подключиться к поп-хосту из командной строки? 'telnet pop.gmail.com pop' или' telnet pop.gmail.com 110'. Если это не сработает, ваша проблема не связана с RoR. – jhwist

ответ

17

Попробуйте это:

require 'net/pop' 
Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE) 
Net::POP3.start('pop.gmail.com', 995, username, password) do |pop| 
    if pop.mails.empty? 
    puts 'No mails.' 
    else 
    pop.each_mail do |mail| 
     p mail.header 
     p mail.pop 
    end 
    end 
end 
Смежные вопросы