Почему я не могу отправить электронное письмо с помощью pow?
У меня есть проект rails, который отправляет электронную почту с помощью ActionMailer. Кажется, это работает нормально с 'rails server' на localhost:3000, но когда я использую pow, я получаю сообщения об ошибках аутентификации от сервера smtp. Я предполагаю, что это как-то связано с переменными среды. Вот код конфигурации
config.action_mailer.smtp_settings = {
address: "smtp.gmail.com",
port: 587,
domain: "railscasts.com",
authentication: "plain",
enable_starttls_auto: true,
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"]
}
Я на Горном льве.
Спасибо
3 ответа
Pow загружает переменные среды от проверки двух файлов в корне приложения
- .powrc
- .powenv
Я создал файл.powrc с помощью команды touch, затем добавил переменные среды
export GMAIL_USERNAME=username
export GMAIL_PASSWORD="my password"
Затем я перезапустил рабочий для приложения следующим образом:
touch tmp/restart.txt
Почта теперь работает!
У меня есть другое предложение:
В dev просто используйте letter_opener. В любом случае, это более полезно, чем отправка электронных писем.
В производстве используйте SendGrid, а не GMail. SendGrid потрясающий и очень простой в настройке.
Как предположила Blamattina, это может быть связано с вашим доменом в вашем файле конфигурации! Согласно примеру, приведенному Ruby on Rails Guides:
Правильная конфигурация, совместимая с Gmail, выглядит следующим образом:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'baci.lindsaar.net',
:user_name => '<username>',
:password => '<password>',
:authentication => 'plain',
:enable_starttls_auto => true }
Ваш domain
установлен в railscasts.com
, Если это не ваш сайт, я думаю, что этот домен не является правильным. На самом деле, это также необязательно.
Этот Stackru сообщает, что плагин когда-то был необходим, но больше не нужен, если вы используете Rails 3.2 или выше. Комментарий под верхним ответом в статье подробно описывает, что domain
не является обязательным.
Обновление: Судя по описанной вами ошибке, похоже, что вы попали в ошибку аутентификации! Это может быть из-за того, что ваши учетные данные не зарегистрированы должным образом.
Этот пользователь спрашивает в контексте использования Heroku, но ошибка та же. Если ваше приложение работает правильно с сервером Rails, но не с Pow, это проблема установки на стороне сервера. Решение включает в себя необходимость правильно настроить ваш ENV
(окружение) переменные для работы с вашим сервером.