Django 应用程序中的 SMTP-Sendgrid 电子邮件:在本地工作,出现 Heroku 错误 SMTPServerDisconnected

SMTP-Sendgrid Email in Django app: working locally, on Heroku error SMTPServerDisconnected

在我的应用程序的 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.) 按照此处的建议在 heroku 的配置变量中设置 SENDGRID_API_KEY Sending SMTP email with Django and Sendgrid on Heroku

2.) 根据 sendgrid 设置 EMAIL_PORT=456 这是 SSL 连接的端口,我想我已经在我的生产设置中定义了它

如果有人有想法,该怎么做就太好了

好的,我明白了。任何有同样问题的人,这里是对我有用的解决方案: 1.) 确保您实际安装了 heroku sendgrid 插件。您可以通过命令行安装免费套餐:

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

2.) 安装成功后,转到 heroku 上应用程序 'settings' 选项卡上的 'config vars' 部分。按 'reveal convig vars' 并添加为新键 'EMAIL_HOST', 'EMAIL_HOST_USER'、'EMAIL_HOST_PASSOWORD'、'EMAIL_PORT' 和 'EMAIL_USE_TLS'。 对于这些值,只需采用您在本地应用程序上设置的相同值。

现在一切正常,我也可以从我部署的应用程序发送电子邮件。

给你, 这对我 100% 有效,让我知道它是否也适合你

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

EMAIL_HOST = 'smtp.gmail.com'

EMAIL_PORT = 465

EMAIL_HOST_USER = '*******@gmail.com'

EMAIL_HOST_PASSWORD = '************'

EMAIL_USE_SSL = True