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

Я отправляю электронное письмо из своего приложения 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 => "[email protected]",
      :password => "my_email_password",
      :authentication => 'login'
}

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

Edit.

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

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

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

Timeout::Error (execution expired)

Ответ 1

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

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

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

Ответ 2

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

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 => "[email protected]",
      :password => "password",
      :authentication => :plain,
      :enable_starttls_auto => true
  }

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

Ответ 3

Решено! Я просто изменил пароль для моей учетной записи 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 => "[email protected]",
      :password => "my_email_password",
      :authentication => :plain,
      :enable_starttls_auto => true
}

Ответ 5

Вышеупомянутое решение предоставило правильные настройки (которые у меня уже были), но не решило проблему. После продолжительных попыток я продолжал получать ту же ошибку. Оказывается, мне пришлось "очистить CAPTCHA" из Интернета. Подробнее см. gmail documentation.

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

Ответ 6

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

В моем случае это сделало трюк!

Ответ 7

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

  • В gmail перейдите к настройкам.

  • Выберите вкладку "Пересылка и POP/IMAP".

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

Ответ 8

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

Удостоверьтесь, что у вас есть фигаро в вашем gemfile. Чтобы сохранить конфиденциальную информацию, такую ​​как имя пользователя и пароль, в качестве переменных среды

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: '[email protected]' 
gmail_password: "your_example_email_password_here"

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

Ответ 10

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

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

Ответ 11

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

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

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