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



在我的应用程序的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,如下所示使用Django和Sendgrid在Heroku 上发送SMTP电子邮件

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

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

好吧,我想通了。任何有同样问题的人,这里是对我有效的解决方案:1.(确保您已经实际安装了heroku sendgrid插件。您可以通过命令行安装免费层:

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

2.(成功安装后,请转到heroku上应用程序"设置"选项卡上的"配置变量"部分。按"显示convig vars"并添加为新键"EMAIL_HOST","EMAIL_HOST_USER"、"EMAIL_HOST_PASSWORD"、"EMAIL_PORT"one_answers"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

最新更新