1

我开始使用 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'
4

2 回答 2

3

Ruby 的 IMAP 解析器有错误。您的错误输出表明问题不太可能出在您的代码中,很可能是 Ruby IMAP 解析器代码,如果不修补 Ruby,您将无法轻易更改。

如果您只是对 Gmail 感兴趣,并且想尝试更简单的解决方案,请尝试使用 Gmail gem:

https://github.com/nu7hatch/gmail

如果您有兴趣了解正在发生的事情的详细信息以及可能如何修补 Ruby:

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

于 2012-10-06T06:15:39.830 回答
1

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

Google Mail 的 IMAP 端口是 993。您尝试的端口是 POP3。

于 2018-03-26T12:45:11.360 回答