aba*_*sta 2 django heroku python-3.x sendgrid
我一直在努力尝试正确设置settings.py
发送电子邮件以进行密码重置。这是我当前的配置:
SENDGRID_API_KEY = os.environ["SENDGRID_API_KEY"]
SENDGRID_PASSWORD= os.environ["SENDGRID_PASSWORD"]
SENDGRID_USERNAME= os.environ["SENDGRID_USERNAME"]
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = os.environ['SENDGRID_USERNAME']
#EMAIL_HOST_USER = 'apikey'
EMAIL_HOST_PASSWORD = os.environ["SENDGRID_PASSWORD"]
EMAIL_PORT = 587
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = os.environ["DEFAULT_FROM_EMAIL"]
#SENDGRID_SANDBOX_MODE_IN_DEBUG = False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Run Code Online (Sandbox Code Playgroud)
我遇到过以下与我的问题相关的帖子,但没有一个起作用:
当我使用EMAIL_BACKEND = "sendgrid_backend.SendgridBackend"
(安装django-sendgrid-v5
库后)时,我没有收到任何错误,但我没有收到任何电子邮件:'(并且在之前的情况下我遇到了以下错误SMTPServerDisconnected at /password-reset/
和Connection unexpectedly closed
。任何帮助,建议,评论,疯狂的想法真的很感激,因为我在这个问题上花了几个小时,这将是我项目中的一个里程碑。
谢谢大家 :)
小智 5
我在 Google Cloud App Engine 上部署 Django 应用程序时遇到了类似的问题。以下配置(在 settings.py 中)对我有用:
SENDGRID_API_KEY = os.getenv('SENDGRID_API_KEY')
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey' # Exactly that.
EMAIL_HOST_PASSWORD = SENDGRID_API_KEY
EMAIL_PORT = 587 # 25 or 587 (for unencrypted/TLS connections).
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = os.getenv('DEFAULT_FROM_EMAIL')
Run Code Online (Sandbox Code Playgroud)
对于SENDGRID_API_KEY
,请使用“电子邮件 API/集成指南”部分中创建的 API 密钥。根据您的情况,选择 SMTP 中继选项。
对于DEFAULT_FROM_EMAIL
,请使用经过验证的单一发件人电子邮件。您可以在“设置/发件人身份验证”中找到它。这是您在创建发件人时输入的“发件人电子邮件地址”的内容。更多详细信息请参见此处。
我不推荐 Robert D 的答案,因为使用ALLOWED_HOSTS = ['*']
它会容易受到 HTTP 主机标头攻击。从文档中:
“ 的值'*'
将匹配任何内容;在这种情况下,您有责任提供自己的 Host 标头验证(可能在中间件中;如果是这样,则该中间件必须首先在 MIDDLEWARE 中列出)。”
更多详细信息请参见此处。
归档时间: |
|
查看次数: |
1802 次 |
最近记录: |