使用Ruby分析电子邮件:意外的令牌ATOM(应为SPACE)(Net::IMAP::ResponseParseErro



我开始用Ruby解析电子邮件了。我正在尝试从我的GMail帐户中读取:

require 'rubygems'
require 'mail'
Mail.defaults do
retriever_method :imap, :address    => "imap.gmail.com",
:port       => 995,
:user_name  => 'example@gmail.com',
:password   => 'password',
:enable_ssl => true
end
emails = Mail.all
emails.each do |email|
puts email.inspect
end

但我得到了这个错误:

/Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:3277:in `parse_error': unexpected token ATOM (expected SPACE) (Net::IMAP::ResponseParseError)
from /Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:3129:in `match'
from /Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:2100:in `continue_req'
from /Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:2087:in `response'
from /Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:2015:in `parse'
from /Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:1166:in `get_response'
from /Users/andrew/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/net/imap.rb:1051:in `initialize'
from /Users/andrew/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/network/retriever_methods/imap.rb:143:in `new'
from /Users/andrew/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/network/retriever_methods/imap.rb:143:in `start'
from /Users/andrew/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/network/retriever_methods/imap.rb:65:in `find'
from /Users/andrew/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/network/retriever_methods/base.rb:41:in `all'
from /Users/andrew/.rvm/gems/ruby-1.9.3-p194/gems/mail-2.4.4/lib/mail/mail.rb:171:in `all'
Ruby的IMAP解析器出现错误。您的错误输出表明,问题不太可能出现在您的代码中,很可能是Ruby IMAP解析器代码,如果不修补Ruby,您无法轻松更改这些代码。

如果你只是对Gmail感兴趣,并想尝试一个更简单的解决方案,可以试试Gmail宝石:

https://github.com/nu7hatch/gmail

如果你有兴趣了解正在发生的事情的细节,以及可能如何修补Ruby:

http://claudiofloreani.blogspot.com/2012/01/monkeypatching-ruby-imap-class-to-build.html

如果您尝试在POP3邮件服务器上执行IMAP,则会出现此错误消息。

谷歌邮件的IMAP端口是993。您尝试的端口是POP3端口。

相关内容

最新更新