Django SMTP身份验证错误
- 2025-03-21 09:05:00
- admin 原创
- 39
问题描述:
我是 Django 新手,正在使用 Django 开发 Web 应用程序。我已成功使用 Web 应用程序中的Userena设置注册功能,并可以使用验证电子邮件注册为用户。我可以在我的 settings.py 文件中向您显示我的 SMTP 设置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'raihncse@gmail.com'
DEFAULT_FROM_EMAIL = 'raihncse@gmail.com'
SERVER_EMAIL = 'raihncse@gmail.com'
EMAIL_HOST_PASSWORD = '**************'
在我更改 EMAIL_HOST_PASSWORD 之前一切都很好
事实上,由于某种原因,我必须更改该 SERVER_EMAIL( raihncse@gmail.com ) 的旧密码。我已经根据新的 SERVER_EMAIL 密码编辑了 EMAIL_HOST_PASSWORD。
但现在,如果我想注册为新用户,我会遇到以下错误
SMTPAuthenticationError at /accounts/signup/
(534, '5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbvNq
5.7.14 S3l1pFXENupDa_SdPphNHrnzeLPUOyf6O0l1s31w7h_UARx11P89AxPeeZ6xBi2KeQRjsw
5.7.14 nvpxZhPVv771W9ljEDyeWnqpqv3_nakuPo36BEl3IlYj9qVujNB5cm0TYFf9LQAxRjFdda
5.7.14 xh-y5spA9zIQONDsvRRgN3e0DXoIkgxTO3Mu75IaACi-XlvFtFfPBiQ81gUrBZ_PhZsBmh
5.7.14 ajsSf-flNEmoSydyOTNdmwdB0__8> Please log in via your web browser and
5.7.14 then try again.
5.7.14 Learn more at
5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 40sm12125121qgi.47 - gsmtp')
解决方案 1:
谷歌身份验证系统最近发生了一个变化,这意味着为了实现此功能,您必须“允许安全性较低的应用访问”您的谷歌帐户。
对于您的错误,建议您访问此链接:https://support.google.com/mail/answer/78754
在该页面上:
第 2 步要求你尝试显示解锁验证码
步骤 3 说明如何允许安全性较低的应用程序访问。总结如下:
转到允许安全性较低的应用并选择“允许”,让安全性较低的应用访问您的 Google 帐户。我们不建议使用此选项,因为它可能会让其他人更容易访问您的帐户。
解决方案 2:
Google 最新的安全协议不允许您通过不太安全的应用发送消息。
因此解决方法是:
开启不太安全的应用程序。
但仅启用此功能现在似乎不起作用。Google不允许应用程序使用您的默认 Gmail 密码发送消息。因此,要发送消息,您必须遵循以下两个简单步骤:
启用您的 Gmail 帐户的双重身份验证。链接以启用它。
然后从 Google 为您的 gmail 帐户创建应用程序密码。它将是一个 16 位数字的代码。将其放入settings.py或_credentials.py中:
EMAIL_HOST_PASSWORD = 'sixt eend igit code'
链接以了解如何为电子邮件设置应用程序密码
BINGO!问题就解决了。
注意: 仅当您为帐户启用了双重身份验证时才可创建应用程序密码。
解决方案 3:
对我来说,我确实打开了不太安全的应用程序选项,即使那时我收到了 SMTP 错误。这就是我解决问题的方法。
转到https://accounts.google.com/DisplayUnlockCaptcha并单击继续允许访问您的 Google 帐户,然后在 Django 中再次尝试重置密码。
解决方案 4:
这对我有用:
打开您的 Gmail 帐户的双重身份验证。
然后从 Google 为您的 Gmail 帐户创建一个应用密码。它将是一个 16 位数字的代码。将其输入settings.py
或env.py
通过EMAIL_HOST_PASSWORD = 'sixteen-digit code you get from your Gmail'
,并记得将它们也添加到 Django 配置变量中
解决方案 5:
您需要开启对安全性较低的设备的支持:
https://www.google.com/settings/security/lesssecureapps
解决方案 6:
如果您要与 AWS 集成,我建议您使用 SES(简单电子邮件服务)。您可以在 SES 中添加和验证您的电子邮件地址,这样不会引发 SMTPAuthenticationError。
我已经关注了这个 - https://medium.com/hackernoon/the-easiest-way-to-send-emails-with-django-using-ses-from-aws-62f3d3d33efd。
解决方案 7:
这对我有用:
我首先email_info.py
在同一个文件夹中创建settings.py
:
from .email_info import *
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'youremail@gmail.com'
EMAIL_HOST_PASSWORD = 'your_pass'
EMAIL_PORT = 587
然后settings.py
我补充道:
from .email_info import *
EMAIL_USE_TLS = EMAIL_USE_TLS
EMAIL_HOST = EMAIL_HOST
EMAIL_HOST_USER = EMAIL_HOST_USER
EMAIL_HOST_PASSWORD = EMAIL_HOST_PASSWORD
EMAIL_PORT = EMAIL_PORT
最后是views.py
:
from django.conf import settings
from django.core.mail import send_mail
send_mail(subject, message, from_email, to_list, fail_silently=Tre)
这是一个解释此过程的 YouTube 视频:https://www.youtube.com/watch?v= 51mmqf5a0Ss
解决方案 8:
您还可以为 Django 应用程序生成专用的电子邮件密码。
1-请查看此链接https://support.google.com/accounts/answer/185839?co=GENIE.Platform%3DDesktop&hl=en
2- 从 GOOGLE 帐户--> 管理您的帐户--> 安全---> 2 步骤验证打开 2 步骤验证设置
3- 第三,为 Django 创建一个专用通行证,它将有 16 个字符。
4- 您可以在下面找到 django 电子邮件设置
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'your_account@gmail.com'
EMAIL_HOST_PASSWORD = '16characters password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
解决方案 9:
确保 中的密码EMAIL_HOST_PASSWORD
是您可用于登录 中的 gmail 帐户的密码EMAIL_HOST_USER
。要确认这一点,请访问gmail.comEMAIL_HOST_USER
并使用 中的密码登录 中的 gmail 帐户EMAIL_HOST_PASSWORD
。如果它一次性成功,无需任何形式的两步验证,则您已设置好。否则,请允许安全性较低的应用程序并使用其他答案中的教程禁用显示解锁验证码。对我来说,同时执行这两项操作,最重要的是,使用正确的密码对我有用。
解决方案 10:
如何从 Django 或任何库获取电子邮件:
笔记
注意:如果您的帐户使用两步验证,则它将不起作用。
首先使用您要发送电子邮件的帐户打开隐身窗口。
打开安全性较低的应用程序
然后启用它
之后导航到解锁验证码
然后启用它
之后填写你使用的图书馆的账户邮箱和密码
在Django中:
EMAIL_HOST_USER是电子邮件地址。例如:email@example.com
EMAIL_HOST_PASSWORD是电子邮件密码。例如:smtpmessages.manager@2012
运行该程序首先它不起作用,要使其起作用,请在隐身窗口中打开 Gmail。
然后会收到一封来自谷歌的电子邮件,说某个应用需要访问你的谷歌账户
打开电子邮件并单击链接,然后选择“是的,是我”,然后重试,它应该有效
谢谢你!
欲了解更多信息,请访问:通过其他电子邮件平台检查 Gmail
解决方案 11:
打开您的 Gmail 帐户的双重身份验证。
生成应用程序密码(双因素身份验证后您将获得此选项)>>选择应用程序>>选择设备(在我的情况下,应用程序是 Gmail,设备是 Windows 机器)
复制16位密码
将此密码粘贴至 EMAIL_HOST_PASSWORD = "(在此处粘贴密码)"
解决方案 12:
这并非您问题的确切答案。但考虑到您的 Google 帐户的隐私和安全,请在高级系统设置中使用环境变量。并使用“os.environ.get('Host_Email') and ('Host_Pass)”进行访问,而不是在代码中输入您的电子邮件和密码。
https://www.youtube.com/watch?v=IolxqkL7cD8
解决方案 13:
您需要使用应用密码来允许您的应用访问您的 Google 帐户。 *您可以查看我的回答,其中解释了如何生成应用密码。
使用应用程序密码登录:
应用密码是一个 16 位密码,可让安全性较低的应用或设备访问您的 Google 帐号。应用密码只能用于已开启两步验证的帐号。
因此,您的应用密码为16 位密码的代码如下所示:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'raihncse@gmail.com'
DEFAULT_FROM_EMAIL = 'raihncse@gmail.com'
SERVER_EMAIL = 'raihncse@gmail.com'
EMAIL_HOST_PASSWORD = 'xylnudjdiwpojwzm' # Here
此外,自 2022 年 5 月 30 日起,谷歌就不允许您的应用使用用户名(电子邮件地址)和密码访问您的谷歌帐户。所以现在,您需要用户名(电子邮件地址)和应用密码才能访问您的谷歌帐户。
安全性较低的应用和您的 Google 帐户:
为了帮助保障您的帐号安全,自 2022 年 5 月 30 日起,Google 不再支持使用要求您仅使用用户名和密码登录 Google 帐号的第三方应用或设备。
解决方案 14:
我认为您需要打开 Google 的低安全应用程序。登录您的帐户并转到低安全应用程序来更改您的设置。这不太好,但您可以尝试您的代码。
解决方案 15:
如果您已经允许访问不太安全的应用程序但仍然遇到问题,请转到您的帐户>>登录和安全>>设备中的通知和活动,看看是否有设备试图访问而谷歌拒绝了,请允许该访问。
解决方案 16:
确保您已在“允许安全性较低的应用程序”页面 ( https://www.google.com/settings/security/lesssecureapps ) 中选择了“打开”选项。我建议您在选择“打开”单选按钮后刷新一次页面。单选按钮选择不应移动到“关闭”
不知何故它会自动“关闭”。
扫码咨询,免费领取项目管理大礼包!