我目前正在阅读一本关于 Django 的书(面向初学者),我已经到了需要使用 SendGrid 对测试网站实现密码重置功能的地步。 SMTP 中继。
创建帐户并开始创建 SMTP 中继后,我看到了以下屏幕: 基于此页面,我将以下代码行添加到我的 setting.py 文件中:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey'
EMAIL_HOST_PASSWORD = 'xxxxx' #the string which is partialy hidden under the pink square
EMAIL_PORT = 587
EMAIL_USE_TLS = True
在运行网站并尝试重置我的密码( super 用户的密码)后,我在控制台中收到了带有重置链接的所需消息,但遗憾的是我的电子邮件没有收到任何信息。因此,我在尝试验证集成时收到以下错误消息。
到目前为止我尝试了什么:
- 我尝试创建多个不同的 API key 以确保 API key 没有问题
- 我创建了一个新的 SendGrid 帐户
- 我尝试从
settings.py文件中删除EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'(这只会让事情变得更糟)<
我已经尝试解决这个问题一天多了,非常感谢任何帮助!
请您参考如下方法:
您的电子邮件后端设置设置为使用控制台。如果您只是调试没关系,您可以在控制台中查看电子邮件的外观并从那里复制您的密码重置链接。
如果您真的想发送电子邮件,请使用 SMTP 后端:设置 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'。
但请注意,不要使用它向虚假地址发送电子邮件,如果您的 sendgrid 帐户退回太多邮件,您会遇到麻烦。
此外,如果您打算在生产中使用 SendGrid,请使用 API 而不是 SMTP。 django-anymail(但也有其他包)提供了一个后端来使用 API。
2021 年 6 月更新 Sendgrid 不再允许简单的用户名/密码身份验证(并强制您使用 2FA 登录)。您应该使用 API,或者专门为您的服务器创建一个应用密码,并使用该密码代替您的普通密码。
