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
Пряме посилання на сторінку "очищення CAPTCHA": accounts.google.com/DisplayUnlockCaptcha
tmr08c

2

Набагато пізніше, але про всяк випадок, коли це комусь допоможе .. Просто зателефонувавши до довідкового центру Google Apps, і вони наказали змінити параметр менш безпечних додатків (як і всі інші), а також змінити порт на 465.

У моєму випадку це зробило трюк!



0

Привіт, це також спрацювало у мене, і тому, якщо хтось все ще має проблеми, спробуйте це.

Переконайтеся, що у вашому 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: '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

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

  • Йти до https://myaccount.google.com/u/0/apppasswords
  • Створіть новий пароль для своєї програми
  • Замініть особистий пароль на згенерований у config.action_mailer.smtp_settings

Тепер надсилання електронних листів працює ідеально!


0

Щоб вирішити цю проблему:

  • Якщо ви бачите: Net :: SMTPAuthenticationError (535-5.7.8 Ім'я користувача та пароль не приймаються.) , То вам потрібно дозволити менш безпечним програмам входити у свій обліковий запис Google. Щоб увімкнути вхід менш безпечних програм, виконайте такі дії: https://myaccount.google.com/lesssecureapps? . Але дозволить усім програмам увійти в систему. Якщо ви хочете його налаштувати, зверніться за посиланням: https://support.google.com/a/answer/6260879?hl=uk

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

ПРИМІТКА: Будь ласка, переконайтесь, що ви використовуєте правильні дані облікового запису Gmail.

Якщо ви не бажаєте дозволяти всі програми, перейдіть за посиланням: https://support.google.com/a/answer/6260879?hl=uk . За посиланням перейдіть до Використовуйте альтернативи менш безпечним програмам , це допоможе вам знайти альтернативний спосіб дозволити менш безпечним програмам доступ до вашого облікового запису Google.


-1

У мене була та сама проблема, і після деяких спроб і помилок я дійшов до цієї розв’язки, яку можна ввімкнути в google:

Натисніть https://www.google.com/settings/u/0/security/lesssecureapps

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.