Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法通过Django的SendGrid验证_Python_Django_Sendgrid_Django Email - Fatal编程技术网

Python 无法通过Django的SendGrid验证

Python 无法通过Django的SendGrid验证,python,django,sendgrid,django-email,Python,Django,Sendgrid,Django Email,我目前正在读一本关于Django(初学者)的书,我已经到了需要使用SMTP中继实现测试网站密码重置功能的地步 创建帐户并开始创建SMTP中继后,我看到以下屏幕: 基于此页面,我在setting.py文件中添加了以下代码行: 在运行网站并尝试重置我的密码(超级用户的密码)后,我通过控制台中的重置链接获得了所需的消息,但遗憾的是,我的电子邮件没有收到任何消息。因此,在尝试验证集成时,我会收到以下错误消息。 到目前为止,我尝试的是: 我尝试创建多个不同的API键,以确保API键没有问题 我创建了

我目前正在读一本关于Django(初学者)的书,我已经到了需要使用SMTP中继实现测试网站密码重置功能的地步

创建帐户并开始创建SMTP中继后,我看到以下屏幕: 基于此页面,我在setting.py文件中添加了以下代码行:

在运行网站并尝试重置我的密码(超级用户的密码)后,我通过控制台中的重置链接获得了所需的消息,但遗憾的是,我的电子邮件没有收到任何消息。因此,在尝试验证集成时,我会收到以下错误消息。


到目前为止,我尝试的是:

  • 我尝试创建多个不同的API键,以确保API键没有问题
  • 我创建了一个新的SendGrid帐户
  • 我试图从
    settings.py
    文件中删除
    EMAIL\u BACKEND='django.core.mail.backends.console.EmailBackend'
    (这只会让事情变得更糟)

我已经尝试解决这个问题一天多了,任何帮助都将不胜感激

考虑到您当然不打算在不保护您的信息(即创建环境变量)的情况下投入生产,我认为这些设置应该是正确的。我想你会这样做,但如果不是,你真的应该考虑一下。 还有,这是你的实际设置,你应该马上编辑这篇文章。他们应该保守秘密,否则你很快就会有糟糕的一天

考虑到问题的性质,我有点希望您不是在开发环境中测试它,而是尝试在生产环境中运行它。我还怀疑,你正在使用免费帐户的Pythonywhere或Heroku。如果我在这里都错了,请告诉我:)

骨瘦如柴的是:如果不拿出那5美元,这两个提供商(我想其他提供商也加了这么多)就不会让你使用sendgrid


如果我假设错误,我希望看到处理电子邮件发送的views.py。

您的电子邮件后端设置设置为使用控制台。如果你只是在调试,没问题,你可以在控制台上看到电子邮件的样子,然后从那里复制你的密码重置链接

如果确实要发送电子邮件,请使用SMTP后端:Set
email\u backend='django.core.mail.backends.SMTP.EmailBackend'

但是要小心,不要用它向假地址发送电子邮件,如果你的sendgrid帐户上有太多的跳转,你会有麻烦的

另外,如果要在生产中使用SendGrid,请使用API而不是SMTP。django anymail(但也有其他软件包)提供了使用API的后端

2021年6月更新
Sendgrid不再允许简单的用户名/密码身份验证(并强制您使用2FA登录)。您应该使用API,或者专门为您的服务器创建应用程序密码,并使用该密码而不是普通密码。

不要在上面张贴敏感密码!您的sendgrid帐户不允许任何人用作邮件提供商。@DirkRoten非常感谢您的关注:)在撰写本文之前,我已经禁用了APIkey@dirkgroten也就是说,我刚刚从照片中编辑了API。这是来自您当地的开发环境还是来自生产环境?@dirkgroten我正在运行代码使用的是
python manage.py runserver
,因此我在本地运行它。非常感谢您的快速回复。在写这篇文章之前,我已经禁用了这些键(只是为了确保我也从问题中删除了它们)。我正在使用
python manage.py runserver
测试该网站,因此重置链接类似于“”。SendGrid不是每天提供100封免费电子邮件吗?是的。第一个月有10000辆,之后就降到100辆了。太好了,非常感谢。是的,我知道API,我只是在测试SMTP版本。奇怪的是,我现在看到SendGrid中的电子邮件数量在增加,但我似乎没有收到这些电子邮件。
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