2014-09-16 3 views
39

Я пытаюсь создать контактную форму в Rails 4. Я сделал кое-что здесь, и смог получить большую часть материала для работы. (после работы @ sethfri здесь Contact Form Mailer in Rails 4)Rails 4, как правильно настроить параметры smtp (gmail)

Сейчас я могу заполнить свою форму и нажать отправить. На моем сервере rails говорится, что почта была отправлена ​​на мой адрес электронной почты, но я ничего не получаю в моем почтовом ящике gmail, поэтому я думаю, что мои настройки smtp неверны. Мои настройки SMTP являются:

... конфигурации/среда/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/Инициализаторы/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) без успеха.

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

+1

Вы проверили папку со спамом в учетной записи gmail? –

+0

сначала отправьте отправленную папку вашей учетной записи gmail – fengd

+0

Эй, да, я проверил папки отправленных и спамов на отправляющем электронном письме и получая электронные письма (также учетную запись gmail). – ResrieC

ответ

46

Необходимо правильно установить домен. В настоящее время в коде размещен свой «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 
} 
+1

Эй, я сделал это, попробовал его с портом 587 в кавычках и без кавычек, и ни один из них не работает. – ResrieC

+10

Измените значение ключа ': authentication' от': plain' до ': login'. Это сработало для меня так, используя рельсы 4. – Throoze

+0

домен, очевидно, определяет доменное имя, которое вы можете использовать внутри или в своей Mail, чтобы ссылаться на отправляющего клиента! Этот ответ следует исправить или удалить! – wegginho

0

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

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

+2

Автор говорит об отправке писем через SMTP-сервер Gmail, вы знаете? Это не имеет никакого отношения к Оауту. – idmean

+0

И все же ответ уместен. Чтобы иметь возможность использовать SMTP, вам нужно настроить для включения «менее безопасных клиентов». Альтернатива (с точки зрения googles) заключается в том, чтобы не использовать SMTP вообще. Основной целью автора является получение работы по доставке электронной почты. SMTP просто хочет * кажется * необходимо. – NobodysNightmare

29

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

+0

Спасибо за это предложение. Google включил это на моей учетной записи, и электронные письма сразу перестали течь. Это решило проблему. – CodeSmith

+0

Я включил менее безопасные пароли и выполнил https://accounts.google.com/b/0/DisplayUnlockCaptcha. Мое производственное приложение все еще отклоняет учетные данные. Я переключился с Linode на Heroku, и эта проблема возникла, когда был сделан переключатель. Любые идеи относительно того, почему это все равно произойдет после включения менее безопасных приложений и выполнения DisplayUnlockCaptcha? – Matt

3

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

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

Настройка 2-Step Проверочный

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

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

Как создать пароль приложения

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