【问题标题】:Django SMTPAuthenticationErrorDjango SMTPAuthenticationError
【发布时间】:2014-12-29 02:59:49
【问题描述】:

我是 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\n5.7.14 S3l1pFXENupDa_SdPphNHrnzeLPUOyf6O0l1s31w7h_UARx11P89AxPeeZ6xBi2KeQRjsw\n5.7.14 nvpxZhPVv771W9ljEDyeWnqpqv3_nakuPo36BEl3IlYj9qVujNB5cm0TYFf9LQAxRjFdda\n5.7.14 xh-y5spA9zIQONDsvRRgN3e0DXoIkgxTO3Mu75IaACi-XlvFtFfPBiQ81gUrBZ_PhZsBmh\n5.7.14 ajsSf-flNEmoSydyOTNdmwdB0__8> Please log in via your web browser and\n5.7.14 then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 40sm12125121qgi.47 - gsmtp')

【问题讨论】:

  • 您是否阅读了错误消息并按照那里的说明进行操作?

标签: python django authentication gmail smtp-auth


【解决方案1】:

Google 身份验证系统的一项相对较新的变化意味着您必须“允许不太安全的应用程序访问”您的 Google 帐户才能使其正常工作。

在您的错误中,建议您访问此链接:https://support.google.com/mail/answer/78754

在那个页面上:

第 2 步要求您尝试Displaying an Unlock Captcha

第 3 步解释了如何允许不太安全的应用访问。总结:

转到Allow less secure apps 并选择“允许”以允许不太安全的应用访问您的 Google 帐户。我们不建议使用此选项,因为它可能会使某人更容易访问您的帐户。

【讨论】:

  • Note to Google Apps users: This setting is hidden if your administrator has locked less secure app account access. 您必须先在管理控制台中启用此功能,稍后您将能够允许lesssecureapps
  • 如果您想在 Google Apps 中激活此选项,正如@psychok7 指出的那样:Security &gt; Basic Settings &gt; Less Secure Apps Accesssupport.google.com/a/answer/2537800?hl=en#lesssecureappsaccess
  • +1 用于解锁验证码,我想知道为什么即使我启用了允许安全性较低的应用程序也无法进行身份验证
【解决方案2】:

您需要开启对安全性较低的设备的支持: https://www.google.com/settings/security/lesssecureapps

【讨论】:

    【解决方案3】:

    确保您在允许安全性较低的应用页面 (https://www.google.com/settings/security/lesssecureapps) 中选择了“开启”选项。 我建议您在选择“打开”单选按钮后刷新一次页面。单选按钮选择不应移动“关闭”

    它是如何自动“关闭”的。

    【讨论】:

      【解决方案4】:

      我认为您需要打开谷歌安全性较低的应用程序。登录您的帐户并前往less secure apps 更改您的设置。这不好,但你可以试试你的代码。

      【讨论】:

        【解决方案5】:

        如果您已经允许访问不太安全的应用程序但仍然遇到问题,请转到您的帐户 >> 登录和安全 >> 设备中的通知和活动,并查看是否有设备尝试访问并且 google 拒绝了它,允许该访问。

        【讨论】:

          【解决方案6】:

          这对我有用:

          我首先在与settings.py 相同的文件夹中创建了email_info.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

          【讨论】:

            【解决方案7】:

            Google 最近的安全协议不允许您通过安全性较低的应用发送消息。

            所以解决方法是:

            打开不太安全的应用程序。

            但现在似乎只启用此功能不起作用。Google 不允许应用使用您的默认 gmail 密码发送消息。因此,要发送消息,您必须遵循以下两个简单步骤:

            1. 开启您的 gmail 帐户的双重身份验证。 Link to turn it on.

            2. 然后从 Google 为您的 gmail 帐户创建应用密码。这将是一个 16 位数的代码。将其放在 settings.py_credentials.py 中:EMAIL_HOST_PASSWORD = 'sixt eend igit code'Link to know how to set up your application password for email

            还有宾果游戏!问题会解决的。

            注意: 只有在您的帐户启用了 2 因素身份验证后才能创建应用密码。

            【讨论】:

            • 链接似乎可疑/错误。不要点击它。
            • 您能否对您在这里实际所做的事情进行更明确的说明。该链接已失效,并且单击了我的 Gmail 帐户链接以设置 2 阶段身份验证,我不知道下一步该做什么。 “为您的 gmail 帐户创建应用程序密码......这将是一个 16 位代码”到底是什么意思?
            • @AbhayManiyar 感谢您指出这一点。我在发布网址时输入错误https://ttps://....。我现在修复了损坏的网址。
            • @mikerodent 当您使用您的 gmail 帐户发送电子邮件时,您的用户名和密码就足够了。但是,当您尝试使用应用程序以编程方式执行此操作时,首先您需要让 Google 知道使用电子邮件发送消息的应用程序是您的应用程序并且您信任它。所以你必须为你的应用程序设置一个单独的16 digit password。阅读本文设置您的应用程序密码:shorturl.at/imAQZ
            • 这是正确的更新答案
            【解决方案8】:

            对我来说,即使遇到 SMTP 错误,我也确实打开了不太安全的应用选项。这就是我解决它的方法。

            转到https://accounts.google.com/DisplayUnlockCaptcha 并通过单击继续允许访问您的 Google 帐户,然后尝试在 Django 中再次重置密码。

            【讨论】:

              【解决方案9】:

              这对我有用:

              1. 为您的 Gmail 帐户启用两因素身份验证。

              然后从 Google 为您的 Gmail 帐户创建一个应用密码。这将是一个 16 位数的代码。将其放入 settings.pyenv.py by EMAIL_HOST_PASSWORD = 'sixteen-digit code you get from your Gmail' 并记住将它们也添加到 Django config vars 中

              【讨论】:

                【解决方案10】:

                如果您正在与 AWS 集成,我的建议是使用 SES(简单电子邮件服务)。您可以在不会引发 SMTPAuthenticationError 的 SES 中添加和验证您的电子邮件地址。

                我已经关注了这个 - https://medium.com/hackernoon/the-easiest-way-to-send-emails-with-django-using-ses-from-aws-62f3d3d33efd

                【讨论】:

                  【解决方案11】:

                  您还可以为 Django 应用程序生成专用的电子邮件密码。

                  1- 请查看此链接https://support.google.com/accounts/answer/185839?co=GENIE.Platform%3DDesktop&hl=en

                  2- 从 GOOGLE 帐户打开 2 步验证设置--> 管理您的帐户 --> 安全 ---> 2 步验证

                  3- 第三,为 Django 创建一个专用的 pass,它将是 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
                  

                  【讨论】:

                    【解决方案12】:

                    确保EMAIL_HOST_PASSWORD 中的密码是您可以用来登录EMAIL_HOST_USER 中的gmail 帐户的密码。要确认这一点,请转到gmail.com 并使用EMAIL_HOST_PASSWORD 中的密码登录EMAIL_HOST_USER 中的gmail 帐户。如果它在没有任何形式的两步身份验证的情况下一次性工作,那么你就设置好了。否则,允许使用安全性较低的应用程序并使用其他答案中的教程禁用显示解锁验证码。对我来说,两者都做,最重要的是,使用正确的密码对我有用。

                    【讨论】:

                      【解决方案13】:

                      2022 年 2 月更新:

                      尝试 2 件事,以便能够使用 Django 发送 Gmail

                      1. 允许安全性较低的应用:开启 ↓↓↓

                        https://myaccount.google.com/lesssecureapps

                      2. 允许访问您的 Google 帐户:开启(点按“继续”)↓↓↓

                        https://accounts.google.com/DisplayUnlockCaptcha

                      【讨论】:

                        猜你喜欢
                        • 2012-11-02
                        • 2016-04-29
                        • 2016-11-18
                        • 2018-01-01
                        • 2020-04-03
                        • 2021-07-30
                        • 2014-10-25
                        • 2021-12-11
                        • 1970-01-01
                        相关资源
                        最近更新 更多