2016-10-03 74 views
1

我試着用gmail寶石與此代碼`get_tagged_response」使用寶石的Gmail

require 'gmail' 

gmail = Gmail.connect($username, $password) 

gmail.inbox.find(:unread).each do |email| 
    email.read! 
end 

,當返回這一點:

/home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/imap.rb:1198:in `get_tagged_response': Unknown command c107mb38116751qgc (Net::IMAP::BadResponseError) 
    from /home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/imap.rb:1250:in `block in send_command' 
    from /home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
    from /home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/imap.rb:1232:in `send_command' 
    from /home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/imap.rb:454:in `block in select' 
    from /home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
    from /home/ubuntu/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/imap.rb:452:in `select' 
    from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/gmail-0.6.0/lib/gmail/client/base.rb:207:in `switch_to_mailbox' 
    from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/gmail-0.6.0/lib/gmail/client/base.rb:164:in `block in mailbox' 
    from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/gmail-0.6.0/lib/gmail/client/base.rb:161:in `synchronize' 
    from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/gmail-0.6.0/lib/gmail/client/base.rb:161:in `mailbox' 
    from /home/ubuntu/.rvm/gems/ruby-2.3.0/gems/gmail-0.6.0/lib/gmail/client/base.rb:184:in `inbox' 
    from get-mail.rb:10:in `<main>' 

其他Ubuntu的實例相同的代碼工作正常。 即時通訊使用Gmail(0.6.0)和gmail_xoauth(0.4.2)和Ubuntu 14.04.4

即時通訊有點失落與這一個。可能與地區設置有關。

任何線索?

回答

0

@molokoV,我能夠重現錯誤,你正在使用OS X的機器,所以看起來像Ubuntu不是問題。

所以,我搜索了寶石的文檔,發現這個:

  • In Gmail Security Settings, enable access for less secure applications.

注意:如果啓用了2FA,則無法啓用此功能。

另外,Google提供的gem google-api-client也支持OAuth2。完整的文檔和快速入門可在此鏈接中找到https://developers.google.com/api-client-library/ruby/apis/gmail/v1

+0

我已啓用'不太安全的應用程序'。問題是谷歌imap服務器拒絕了請求。我嘗試使用oauth API,它工作。 oauth的唯一問題是令牌到期,我不得不添加更多的代碼來支持它。 – molokoV