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
}
Ответ 4
перейдите по следующей ссылке и включите
https://www.google.com/settings/security/lesssecureapps
Ответ 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"
Вы должны использовать свой адрес электронной почты и пароль для аутентификации в файле.
Ответ 9
У меня такая же проблема.
Вы можете включить less secure apps
вариант less secure apps
( здесь).
https://myaccount.google.com/lesssecureapps
И разблокировать Captcha ( ссылка):
https://accounts.google.com/DisplayUnlockCaptcha
Ответ 10
Принятый ответ кажется очень старым, я не знаю, существовало ли в то время существующее (лучшее) решение:
Теперь отправка писем работает отлично!
Ответ 11
У меня была такая же проблема, и после некоторых проб и ошибок я пришел к этой резолюции, которая может быть включена в google:
Нажмите https://www.google.com/settings/u/0/security/lesssecureapps
Включите "Доступ для менее безопасных приложений" здесь, войдя в систему с адресом электронной почты, который вы предоставили в конфигурации smtp.