it-swarm.com.ru

Rails 4, как правильно настроить параметры smtp (gmail)

Я пытаюсь создать контактную форму в Rails 4. Я немного покопался здесь и смог заставить большинство вещей работать. (следил за работой @ sethfri здесь Контактная форма Mailer в Rails 4 )

Прямо сейчас я могу заполнить форму и нажать «Отправить». На моем сервере Rails написано, что письмо было отправлено на мой адрес электронной почты, но я ничего не получаю в своем почтовом ящике, поэтому я считаю, что мои настройки SMTP неверны. Мои настройки SMTP:

... config/environment/development.rb

config.action_mailer.raise_delivery_errors = true
  config.action_mailer.perform_deliveries = true

  config.action_mailer.default_url_options = { :Host => 'localhost:3000' }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "[email protected]",
    :password => "myGmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
  } 

Также я добавил в .../config/initializers/smtp_settings.rb

ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => "587",
    :domain => "mydomain.net",
    :user_name => "[email protected]",
    :password => "gmailPassword",
    :authentication => "plain",
    :enable_starttls_auto => true
}

Что я пропускаю/делаю неправильно? Я поиграл с парой вещей (изменил default_url на порт 1025, изменил: port => "587" на: port => 587), но безуспешно.

Спасибо за помощь!

45
ResrieC

Вы должны правильно установить домен. В данный момент в коде размещен свой «mydomain.net». Измените его на gmail.com , если вы хотите отправить его через gmail.

config.action_mailer.smtp_settings = {
  address:              'smtp.gmail.com',
  port:                 587,
  domain:               'gmail.com',
  user_name:            '[email protected]',
  password:             'yourpassword',
  authentication:       :plain,
  enable_starttls_auto: true
}
52
TarunJadhwani

Если вы сталкиваетесь с ошибками, такими как Net :: SMTPAuthenticationError, при использовании gmail для отправки электронных писем (что характерно для учетных записей Служб Google), перейдите в настройки gmail и включите менее безопасные приложения, чтобы приложение работало.

35
Kim Miller

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

При включении двухэтапной проверки (также известной как двухфакторная проверка подлинности) вы добавляете дополнительный уровень безопасности для своей учетной записи. Вы входите в систему с тем, что вы знаете (ваш пароль) и чем-то, что у вас есть (код, отправленный на ваш телефон).

Настройка двухэтапной проверки

  1. Перейдите на двухэтапную проверку страницу. Возможно, вам придется войти в свою учетную запись Google.
  2. В поле «Двухэтапная проверка» справа выберите Начать настройку.
  3. Следуйте пошаговой процедуре установки.

Пароль приложения - это 16-значный пароль, который дает приложению или устройству разрешение на доступ к вашей учетной записи Google. Если вы используете 2-Step-Verification и видите ошибку «неверный пароль» при попытке получить доступ к своей учетной записи Google, пароль приложения может решить проблему. В большинстве случаев вам нужно будет вводить пароль приложения только один раз для каждого приложения или устройства, поэтому не беспокойтесь о его запоминании

Как сгенерировать пароль приложения

  1. Посетите ваши пароли приложений страницу. Вас могут попросить войти в свою учетную запись Google.
  2. Внизу нажмите «Выбрать приложение» и выберите приложение, которое вы используете.
  3. Нажмите «Выбрать устройство» и выберите устройство, которое вы используете.
  4. Выберите Создать.
  5. Следуйте инструкциям, чтобы ввести пароль приложения (16-значный код в желтой полосе) на вашем устройстве.
  6. Выберите Готово
5
Gabriel Sigouin

Google рекомендует использовать OAuth 2.0 для входа в систему. Эта конфигурация "не так безопасна" для Google, но они терпят это. Вы должны разрешить "менее безопасные подключения" в настройках своего аккаунта Google или использовать OAuth-способ . https://developers.google.com/identity/protocols/OAuth2

Их библиотека для Ruby по-прежнему является альфа-версией. Кажется, есть некоторые драгоценные камни, расширяющие ActionMailer для OAuth, но я никогда не использовал их.

0
DOK