Foz*_*oro 3 python django django-email sendgrid
我目前正在阅读一本关于 Django 的书(针对初学者),并且我需要使用SendGrid SMTP Relay 对测试网站实现密码重置功能。
创建帐户并开始创建 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
Run Code Online (Sandbox Code Playgroud)
运行网站并尝试重置我的密码(超级用户的密码)后,我在控制台中收到带有重置链接的所需消息,但遗憾的是我的电子邮件没有收到任何消息。因此,我在尝试验证集成时收到以下错误消息。

到目前为止我尝试过的:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'我尝试从文件中删除settings.py(这只会让事情变得更糟)我已经尝试解决这个问题一天多了,任何帮助将不胜感激!
您的电子邮件后端设置设置为使用控制台。如果您只是进行调试,那没问题,您可以在控制台中查看电子邮件的外观,并从那里复制密码重置链接。
如果您确实想发送电子邮件,请使用 SMTP 后端:设置EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'。
但要注意,不要使用它向虚假地址发送电子邮件,如果您的 sendgrid 帐户上有太多退回邮件,您就会遇到麻烦。
另外,如果您要在生产中使用 SendGrid,请使用 API 而不是 SMTP。django-anymail(但也有其他软件包)提供了使用 API 的后端。
2021 年 6 月更新 Sendgrid 不再允许简单的用户名/密码身份验证(并强制您使用 2FA 登录)。您应该使用 API,或者专门为您的服务器创建一个应用程序密码,并使用它来代替普通密码。