SMTP-Sendgrid Email в приложении Django: работает локально, ошибка Heroku SMTPServerDisconnected - PullRequest
0 голосов
/ 22 февраля 2020

В развернутой Heroku версии моего приложения при тестировании функции сброса пароля я получаю ошибку SMTPServerDisconnected at /accounts/password/reset/ please run connect() first, эта функция сброса прекрасно работает на локальной версии моего приложения - я получаю письма от sendgrid без каких-либо проблемы и приложение ведет себя так, как и ожидалось:

мои настройки электронной почты:

EMAIL_HOST=smtp.sendgrid.net
EMAIL_HOST_USER=apikey
EMAIL_HOST_PASSWORD=*****************************************
EMAIL_PORT=587
EMAIL_USE_TLS=True

мои настройки производства:

if ENVIRONMENT == 'production':
    SECURE_BROWSER_XSS_FILTER = True
    X_FRAME_OPTIONS = 'DENY'
    SECURE_SSL_REDIRECT = True
    SECURE_HSTS_SECONDS = 3600
    SECURE_HSTS_INCLUDE_SUBDOMAINS = True
    SECURE_HSTS_PRELOAD = True
    SECURE_CONTENT_TYPE_NOSNIFF = True
    SESSION_COOKIE_SECURE = True
    CSRF_COOKIE_SECURE = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

Я попробовал следующее (не удалось) Решения: 1.) Установка SENDGRID_API_KEY в конфигурационных переменных heroku, как предлагается здесь Отправка SMTP-почты с помощью Django и Sendgrid на Heroku

2.) Установка EMAIL_PORT = 456 в соответствии с sendgrid это порт для соединений SSL, и я думаю, что я определил, что в моих производственных настройках

Было бы замечательно, если у кого-то есть идея, что делать

1 Ответ

0 голосов
/ 23 февраля 2020

Хорошо, я понял это. Любой, у кого возникла та же проблема, вот решение, которое сработало для меня: 1.) Убедитесь, что у вас фактически установлено дополнение heroku sendgrid. Вы можете установить бесплатный уровень через командную строку:

heroku addons:create sendgrid:starter -a <your-heroku-app-name>

2.) После успешной установки go в разделе «config vars» на вкладке «Настройки» вашего приложения на heroku. Нажмите «открыть параметры конфигурации» и добавьте в качестве новых ключей «EMAIL_HOST», «EMAIL_HOST_USER», «EMAIL_HOST_PASSOWORD», «EMAIL_PORT» и «EMAIL_USE_TLS». Для значений просто примите те же значения, которые вы установили в своем локальном приложении.

Теперь все работает, и я также могу отправлять электронные письма из развернутого приложения.

...