Почему я не могу отправить электронное письмо с помощью 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 загружает переменные среды от проверки двух файлов в корне приложения

  1. .powrc
  2. .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 (окружение) переменные для работы с вашим сервером.

Другие вопросы по тегам