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 にパッチを適用しないと簡単に変更できない Ruby IMAP パーサー コードである可能性があります。

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 に答える