Добрый день, ребята, я работаю над приложением rails, которое использует devise для отправки электронных писем с подтверждением зарегистрированным пользователям. Приложение правильно реагирует на среду разработки, и mailcatcher может перехватывать письма. После нажатия на heroku мои журналы показывают ошибку SMTPAuthentication, которая приводит к ошибке сервера 500 каждый раз, когда пользователь регистрируется. Журналы также показывают, что сообщение отправляется до появления ошибки.
2020-02-23T16:04:03.373626+00:00 app[web.1]:
2020-02-23T16:04:03.373627+00:00 app[web.1]: <p>You can confirm your account email through the link below:</p>
2020-02-23T16:04:03.373627+00:00 app[web.1]:
2020-02-23T16:04:03.373628+00:00 app[web.1]: <p><a href="https://own-your-life-campaign.herokuapp.com//users/confirmation?confirmation_token=dsbs-bckkBo-qTcuoNLa">Confirm my account</a></p>
2020-02-23T16:04:03.373629+00:00 app[web.1]:
2020-02-23T16:04:03.373629+00:00 app[web.1]: [12fef5ae-b267-4f98-a4e9-8dd25b6b077b] Completed 500 Internal Server Error in 152ms (ActiveRecord: 5.4ms)
2020-02-23T16:04:03.373630+00:00 app[web.1]: [12fef5ae-b267-4f98-a4e9-8dd25b6b077b]
2020-02-23T16:04:03.373630+00:00 app[web.1]: [12fef5ae-b267-4f98-a4e9-8dd25b6b077b] Net::SMTPAuthenticationError (530-5.7.0 Authentication Required. Learn more at
2020-02-23T16:04:03.373631+00:00 app[web.1]: ):
Вот моя конфигурация SMTP почтового действия в моем файле environment / production.rb.
# ActionMailer Config
config.action_mailer.default_url_options = {
:host => 'https://own-your-life-campaign.herokuapp.com/'
}
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
ActionMailer::Base.smtp_settings = {
:user_name => ENV['SENDGRID_USERNAME'],
:password => ENV['SENDGRID_PASSWORD'],
:domain => 'own-your-life-campaign.herokuapp.com',
:address => 'smtp.sendgrid.net',
:port => 587,
:authentication => :plain,
:enable_starttls_auto => true
}
I Также добавил надстройки SendGrid на heroku и сгенерировал имя пользователя и пароль, вот пример моих переменных окружения на heroku. Из соображений безопасности я опускаю свою базу секретных ключей и ключ SENDGRID_API.
SECRET_KEY_BASE: ------------------------------------------------------------------
SENDGRID_API_KEY: -------------------------------------------------------------------
SENDGRID_PASSWORD: wj7oujsd4159
SENDGRID_USERNAME: app162627210@heroku.com
После создания API-ключа SendGrid я проверил его на их платформе, и он дал мне 200 подтверждений статуса, что нормально. Я также изменил настройки ключа Api для полного доступа. Я не знаю, есть ли дополнительные настройки, которые мне нужно сделать на их платформе в другом для того, чтобы мой пост-запрос правильно аутентифицировался из моего приложения rails, или это тот факт, что я использую бесплатный план?.