Net :: SMTPAuthenticationError при отправке электронной почты из приложения Rails (в промежуточной среде)


95

Я отправляю электронное письмо из своего приложения Rails. Он хорошо работает в среде разработки, но не работает при постановке. Я получаю следующую ошибку:

Net::SMTPAuthenticationError (534-5.7.14 <https://accounts.google.com/ContinueSignIn?plt=AKgnsbtdF0yjrQccTO2D_6)

Обратите внимание, что у меня нет доменного имени для моей постановки.

Вот мои настройки в staging.rb

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here:80" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80'
      :user_name => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => 'login'
}

Пожалуйста помоги.

Редактировать.

После добавления :tls => trueопции я получаю

OpenSSL::SSL::SSLError (Unrecognized SSL message, plaintext connection?)

Затем я изменил порт на 25, и теперь я получаю это (с задержкой 30 секунд):

Timeout::Error (execution expired)

1
Я скопировал ошибочный URL (наверное, Google заранее подумал за нас) в браузер. Ввел свой пароль и в панели, которую я видел, переключилась возможность делать запросы не только с доверенных сайтов.
zmii

Ответы:


249

У меня была та же проблема: электронные письма отправлялись из разработки, но не из производства (откуда я получал Net::SMTPAuthenticationError). Это привело меня к выводу, что проблема была не в конфигурации моего приложения, а в Google.

Причина : Google блокировал доступ из неизвестного местоположения (приложение находится в разработке)

Решение : перейдите на страницу http://www.google.com/accounts/DisplayUnlockCaptcha и нажмите «Продолжить» (это предоставит доступ на 10 минут для регистрации новых приложений). После этого мое работающее приложение начало отправлять электронные письма;)


3
На самом деле это правильный способ решить эту проблему (хотя это может поставить под угрозу вашу учетную запись). Но это работает.
zakelfassi

40
Также не забудьте разрешить доступ к аккаунту здесь :: google.com/settings/security/lesssecureapps
Чаускин Родион

Мне удалось избежать этой lesssecureappsнастройки, используя многофакторную аутентификацию и включив пароль приложения для моего сервера rails.
Крис Бек,

1
Наверное, лучше использовать такую ​​службу, как Mandrill, для отправки электронных писем в производственной среде
Codebling

Я включил настройку учетной записи lesssecureapps, перешел на страницу DisplayUnlockCaptcha и нажал ОК, отправил электронное письмо по рельсам, но получил ту же ошибку Net::SMTPAuthenticationError ...ContinueSignIn.... Затем я попытался сделать то же самое через 10 минут, и все заработало.
Лев Лукомский

25

Это решение работает для меня:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.default_url_options = { host:'localhost', port: '3000' }
  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.default :charset => "utf-8"
  config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'localhost:3000',
      :user_name => "xyz@gmail.com",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

Это правда, что Google заблокирует вашу попытку входа, но вы можете изменить свои настройки на странице https://www.google.com/settings/security/lesssecureapps, чтобы ваша учетная запись больше не была защищена современными стандартами безопасности.


Есть ли способ сделать это? Можно ли, например, зарегистрировать свое приложение в Google?
jphager2

24

Решено! Я просто сменил пароль для своей учетной записи Gmail, и ошибки как-то исчезли.

После десятка изменений я получил следующие окончательные настройки:

config.action_mailer.delivery_method = :smtp
config.action_mailer.default_url_options = { :host => "my.ip.addr.here" }
config.action_mailer.smtp_settings = {
      :address => "smtp.gmail.com",
      :port => 587,
      :domain => 'my.ip.addr.here:80',
      :user_name => "my_email_name@gmail.com",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}

1
Спасибо! Эта проблема вызывала у меня много головной боли, и, в конце концов, мне нужно было изменить пароль моей учетной записи Google после использования этих настроек и установить параметр «Разрешить менее безопасные приложения» в настройках учетной записи Google.
Кори

После установки «разрешить менее безопасные приложения» и указания Google доверять моему устройству (IP-адресу сервера) и ожидания более 24 часов ... простая смена пароля устранила мои проблемы с аутентификацией Gmail. кто-то в Google, вероятно, должен это исправить. ;)
Джейсон Р

Я столкнулся с той же проблемой. Я уже включил lessecureapps, но это не исправит. Я просто изменил свой пароль, и это сработало как шарм. :)
Nikhil Sahu


13

Вышеупомянутое решение предоставило правильные настройки (которые у меня уже были), но не решило проблему. После продолжающихся попыток я продолжал получать ту же ошибку. Оказывается, мне пришлось «очистить CAPTCHA» из Интернета. Подробности см. В документации Gmail.

Вы также можете перейти прямо к странице «Очистить CAPTCHA» здесь .


1
Прямая ссылка на страницу «
Очистить

2

Намного позже, но на всякий случай это кому-то поможет ... Просто позвонили в Справочный центр Google Apps, и они проинструктировали изменить параметр lesssecureapps (как и все), а также изменить порт на 465.

В моем случае это помогло!



0

Здравствуйте, это тоже сработало для меня, поэтому, если у кого-то все еще есть проблема, попробуйте это.

Убедитесь, что в вашем гем-файле есть фигаро. Для сохранения конфиденциальной информации, такой как имя пользователя и пароль, в качестве переменных среды

gem 'figaro'

И в вашем config / environment / development.rb вставьте приведенные ниже коды, используя smtp в качестве метода доставки.

 config.action_mailer.delivery_method = :smtp

Настройки SMTP для Gmail

  config.action_mailer.smtp_settings =
  {
    :address=> "smtp.gmail.com",
    :port => 587,
    :user_name => ENV['gmail_username'],
    :password=> ENV['gmail_password'],
    :authentication=> "plain",
    :enable_starttls_auto=>true
  }


config.action_mailer.default_url_options = { host: "locahost:3000" }

В каталоге конфигурации создайте файл с именем application.yml и добавьте приведенные ниже коды.

gmail_username: 'example@gmail.com' 
gmail_password: "your_example_email_password_here"

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


config.action_mailer.default_url_options = {host: "localhost: 3000"}
cooxy

0

Я также столкнулся с проблемой и после некоторого исследования настроек Gmail нашел решение:

  1. В gmail зайдите в настройки.

  2. Выберите вкладку «Пересылка и POP / IMAP».

  3. В разделе доступа IMAP выберите «Включить IMAP».


0

Принятый ответ кажется очень старым, я не знаю, существовало ли в то время следующее (лучшее) решение:

Теперь отправка писем работает отлично!


0

Чтобы решить эту проблему:

  • Если вы видите: Net :: SMTPAuthenticationError (535-5.7.8 Имя пользователя и пароль не принимаются) , то вам необходимо разрешить менее безопасным приложениям входить в вашу учетную запись Google. Чтобы включить вход в менее безопасные приложения, выполните следующие действия: https://myaccount.google.com/lesssecureapps? . Но позволит всем приложениям войти в систему. Если вы хотите настроить его, обратитесь: https://support.google.com/a/answer/6260879?hl=en

  • Тогда, возможно, вы получите Net :: SMTPAuthenticationError (534-5.7.14) , поэтому для решения этой проблемы обратитесь: pli = 1http: //www.google.com/accounts/DisplayUnlockCaptcha. После этого нажмите «Продолжить» со страницы, на которую вы будете перенаправлены. Он проверит вашу Captcha, и ваше приложение будет проверено на использование вашей учетной записи Google для отправки электронных писем.

ПРИМЕЧАНИЕ. Убедитесь, что вы используете правильные учетные данные своей учетной записи Gmail.

Если вы не хотите разрешать использование всех приложений, перейдите по ссылке : https://support.google.com/a/answer/6260879?hl=ru . По ссылке перейдите к Использовать альтернативы менее безопасным приложениям , это подскажет вам альтернативный способ Разрешить менее безопасным приложениям доступ к вашей учетной записи Google.


-1

У меня была такая же проблема, и после некоторых проб и ошибок я пришел к этому разрешению, которое можно включить в Google:

Нажмите https://www.google.com/settings/u/0/security/lesssecureapps.

Включите здесь «Доступ для менее безопасных приложений», войдя в систему с адресом электронной почты, который вы указали в конфигурации smtp.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.