Python SMTPAuthenticationError:(Django生产中不接受535,b';5.7.8用户名和密码?

Python SMTPAuthenticationError:(Django生产中不接受535,b';5.7.8用户名和密码?,python,django,email,smtp,Python,Django,Email,Smtp,我在Heroku上部署了一个Django应用程序。在其中一个部分中,我将使用SMTP Gmail设置向用户发送电子邮件。当我在本地运行project时,电子邮件会成功发送,但在Heroku上部署的项目上不会成功发送 我在Stackoverflow上看到了许多其他答案,但没有一个能解决我的问题。我在我的Google帐户上启用了2FA,生成了一个应用密码,并在我的设置文件中使用了该密码。其他开发者不建议启用allow_less_secure_APP选项。 Mysettings.py文件电子邮件设置-

我在Heroku上部署了一个Django应用程序。在其中一个部分中,我将使用SMTP Gmail设置向用户发送电子邮件。当我在本地运行project时,电子邮件会成功发送,但在Heroku上部署的项目上不会成功发送

我在Stackoverflow上看到了许多其他答案,但没有一个能解决我的问题。我在我的Google帐户上启用了2FA,生成了一个应用密码,并在我的设置文件中使用了该密码。其他开发者不建议启用allow_less_secure_APP选项。

My
settings.py
文件电子邮件设置-

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = os.environ.get('EMAIL_USER2')
EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASS2')
My
views.py
view处理邮件-

def index(request) 
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            message = form.cleaned_data['message']
            email = form.cleaned_data['email']
            subject = "You got a message"
            thoughts = "{} by {}".format(message,email)
            recipients = ['xyz@gmail.com']
            sender = 'abc@gmail.com'
            send_mail(subject, thoughts, sender ,recipients,fail_silently=False)
            return HttpResponse()
    else:
        form = MyForm()
    return render(request,'my_webapp/index.html',{'form':form})
我在Heroku日志中得到的错误是-

raise SMTPAuthenticationError(code, resp)
2019-10-07T18:22:12.174365+00:00 app[web.1]: smtplib.SMTPAuthenticationError: (535, b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8  https://support.google.com/mail/?p=BadCredentials w2sm9789664qtc.59 - gsmtp')

我也有同样的问题。我通过重置os环境变量解决了这个问题,这些值不应该用引号括起来。例如,MAIL\u USERNAME=blah@gmail.com.应该行得通。

对我有效的解决方案已经发布

我使用了Flask,但错误完全相同。我确保我的凭证是正确的,并且环境变量没有像Eddy Ogola建议的那样用引号括起来

这篇文章的简短回答是,在登录与你发送的gmail相关联的谷歌账户时点击


谷歌不信任大多数脚本登录你的帐户,所以他们让gmail的所有者有责任授予“不太安全的应用”访问你的gmail的权限。

我在Django工作时也遇到了同样的错误[https://i.stack.imgur.com/beMIs.png]

我解决了这个问题,只需将谷歌账户表单“不太安全的应用程序访问”(off)设置为(on) [https://i.stack.imgur.com/N1fNC.png]

因此,请执行此选项 更改您的Google帐户设置,以允许不太安全的应用访问您的帐户。(不建议这样做,因为这样可能会使其他人更容易侵入您的帐户)。如果您仍要允许访问,请执行以下步骤:

  • 转到“不太安全的应用程序”部分
  • 在“访问不太安全的应用程序”旁,选择打开

  • 一般建议:不要使用Gmail作为批量电子邮件发送服务。你会很快被阻止。添加一些日志来检查
    os.environ.get()
    正在Heroku上设置正确的值。请确保您遵循上的所有步骤-例如,您的问题中没有提到验证码建议。您还应确保
    电子邮件\u主机\u用户
    匹配
    发送方abc@gmail.com“
    -Gmail不允许您为其他帐户发送电子邮件。如果它仍然不起作用,那么我同意克劳斯的观点,你应该找一个不同的电子邮件提供商。密码是正确的,我已经检查了两次。此外,displayUnlockCaptcha只是指导我创建应用程序密码的方法,我已经做了5次。另外,这是一个非常小的应用程序,每周可能发送7-8封电子邮件,就是这样。即使它是一个小应用程序,我也会找它对于发送电子邮件的另一种方式-你说我在stackoverflow上看到了许多其他答案-将这些电子邮件视为使用Gmail发送Django电子邮件是一项艰苦工作的标志!其他的替代方式是什么?你能推荐一些吗?我尝试过使用sendgrid,但它们响应我的新帐户太慢了。