POPAuthenticationError - Ошибка Mailman при опросе из учетной записи Gmail

Я пытаюсь включить приложение Rails для получения электронной почты из учетной записи Gmail. Я следую за этим скринкастом: Получение электронной почты с почтальоном.

Я попытался опросить электронные письма из моей учетной записи Gmail, чтобы каждый раз, когда кто-то отправлял электронное письмо, мое приложение получало сообщение, а затем соответствующим образом обновляло базу данных этим сообщением.

Но когда я попытался запустить скрипт / mailman_serve для запуска сервера и опроса, я получил ошибку, подобную этой ниже:

olins-MacBook-Pro:rentlord Ryzal$ script/mailman_server
I, [2016-02-26T02:07:58.104774 #23700]  INFO -- : Mailman v0.7.3 started
I, [2016-02-26T02:07:58.105083 #23700]  INFO -- : Rails root found in ., requiring environment...
/Users/Ryzal/Desktop/Sites/rentlord/config/application.rb:59: warning: already initialized constant OpenSSL::SSL::VERIFY_PEER
I, [2016-02-26T02:08:07.225640 #23700]  INFO -- : POP3 receiver enabled (@pop.gmail.com).
I, [2016-02-26T02:08:07.266177 #23700]  INFO -- : Polling enabled. Checking every 60 seconds.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/pop.rb:1005:in `check_response_auth': -ERR USER _who_? k19mb6670915wjq (Net::POPAuthenticationError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/pop.rb:905:in `block in auth'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/pop.rb:1012:in `critical'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/pop.rb:904:in `auth'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/pop.rb:566:in `do_start'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/net/pop.rb:536:in `start'
    from /Library/Ruby/Gems/2.0.0/gems/mailman-0.7.3/lib/mailman/receiver/pop3.rb:36:in `connect'
    from /Library/Ruby/Gems/2.0.0/gems/mailman-0.7.3/lib/mailman/application.rb:139:in `block in polling_loop'
    from /Library/Ruby/Gems/2.0.0/gems/mailman-0.7.3/lib/mailman/application.rb:137:in `loop'
    from /Library/Ruby/Gems/2.0.0/gems/mailman-0.7.3/lib/mailman/application.rb:137:in `polling_loop'
    from /Library/Ruby/Gems/2.0.0/gems/mailman-0.7.3/lib/mailman/application.rb:87:in `run'
    from /Library/Ruby/Gems/2.0.0/gems/mailman-0.7.3/lib/mailman/application.rb:15:in `run'
    from script/mailman_server:25:in `<main>'

И это мой файл mailman_server:

#!/usr/bin/env ruby
require "rubygems"
require "bundler/setup"
require "mailman"

#Mailman.config.logger = Logger.new("log/mailman.log")

Mailman.config.pop3 = {
  server: 'pop.gmail.com', port: 995, ssl: true,
  username: ENV["[email protected]"],
  password: ENV["xxxxxx"]
}

Mailman::Application.run do
  default do
    begin
      Post.receive_mail(message)
    rescue Exception => e
      Mailman.logger.error "Exception occurred while receiving message:\n#{message}"
      Mailman.logger.error [e, *e.backtrace].join("\n")
    end
  end
end

Кто-нибудь может помочь? Спасибо!

########################### ОБНОВИТЬ ###################### ####

Я также включил настройку POP в моей учетной записи Gmail, но все равно происходит та же ошибка. Это моя настройка POP:

введите описание изображения здесь

2 ответа

Решение

Я смог воспроизвести ошибку только в одном случае. Если бы у меня было username пустой.

Если бы вы могли использовать этот код для расследования. Поместите его в любое место за пределами проекта, убедитесь, что установлен mailman gem, и дважды запустите файл. Один раз имя пользователя жестко и второй раз оставьте его как nil:

#!/usr/bin/env ruby
require "mailman"

username = ''                       
### OR ###
username = '[email protected]'

puts "Using username='#{username}'..." 
Mailman.config.pop3 = {
  server: 'pop.gmail.com', port: 995, ssl: true,
  username: username, 
  password: 'password'
}
Mailman::Application.run do
  default do
    begin
      puts message 
    rescue Exception => e
      Mailman.logger.error "Exception occurred while receiving message:\n#{message}"
      Mailman.logger.error [e, *e.backtrace].join("\n")
    end
  end
end

Использование пустого имени пользователя

Using username=''...
I, [2016-03-02T00:01:44.059312 #16088]  INFO -- : Mailman v0.7.3 started
I, [2016-03-02T00:01:44.059400 #16088]  INFO -- : POP3 receiver enabled (@pop.gmail.com).
I, [2016-03-02T00:01:44.070004 #16088]  INFO -- : Polling enabled. Checking every 60 seconds.
/usr/local/Cellar/ruby/2.2.2/lib/ruby/2.2.0/net/pop.rb:1005:in
 `check_response_auth': -ERR USER _who_? z184mb105814233wlc (Net::POPAuthenticationError)

Используя правильный адрес электронной почты.

Using username='[email protected]'...

I, [2016-03-02T00:05:35.715465 #16178]  INFO -- : Mailman v0.7.3 started
I, [2016-03-02T00:05:35.715540 #16178]  INFO -- : POP3 receiver enabled ([email protected]@pop.gmail.com).
I, [2016-03-02T00:05:35.726853 #16178]  INFO -- : Polling enabled. Checking every 60 seconds.
I, [2016-03-02T00:06:38.281546 #16178]  INFO -- : Got new message from '[email protected]' with subject 'http://stackru.com/questions/35642212/popauthenticationerror-mailman-error-when-polling-from-gmail-account'.
Return-Path: <[email protected]>
Received: by 10.79.115.146 with SMTP id y28csa1793673ivf; Tue, 01 Mar 2016 15:06:05 -0800
Received: from mail-lf0-x22f.google.com (mail-lf0-x22f.google.com. [2a00:1450:4010:c07::22f]) by mx.google.com with ESMTPS id jm5dsi1257241lbc.1.2016.03.01.15.06.05 for 
(...)
X-Mailer: Apple Mail (2.3124)

http://stackru.com/questions/35642212/popauthenticationerror-mailma=
n-error-when-polling-from-gmail-account=

У меня пока нет программного решения, но это "новая" (2014) политика безопасности Google. Пожалуйста, обратитесь к этой статье Google:

https://support.google.com/accounts/answer/6010255?hl=en

Другие вопросы по тегам