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
在我的应用程序的 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