I have a Django app deployed on Heroku. In one of the sections I'm sending email to the user using SMTP Gmail settings. The emails are sent successfully when I run project locally but not on my deployed project on Heroku.
I've seen many of the other answers on Stackoverflow but none of them resolves my issue. I've enabled the 2FA on my Google account and generated an APP password and using that password in my settings file. Turning on allow_less_secure_app option isn't suggested by other developers
My settings.py
file email settings-
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 handling the mail-
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})
The error I'm getting in Heroku logs is-
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')
7条答案
按热度按时间mm5n2pyu1#
The solution that worked for me is posted here .
I used Flask but the error was exactly the same. I made sure that my credentials were correct and the environment variables were not enclosed in quotes like Eddy Ogola suggested.
The short answer from this post is to click this link while logged into the google account associated with the gmail you're sending from.
Google doesn't trust most scripts to login to your account, so they put the onus on the owner of the gmail to give "less secure apps" permission to access your gmail.
ni65a41a2#
I had the same issue. I solved it with resetting the os environment variables, the values shouldn't be enclosed in quotes. For example, MAIL_USERNAME=blah@gmail.com. It should work.
r8xiu3jd3#
I got the same error while working in Django
I resolved it by just setting the google account form Less secure app access (off) to (on)
so perform this option Change your Google account settings to allow less secure apps to access your account. (It's not recommended because it might make it easier for someone to break into your account). if you want to allow access anyway, follow these steps:
5lwkijsr4#
I had the same issue,
Step 1: Check if the credentials is correct(email and password),
Step 2: Check if this is turned ON (if not turn it ON)
Google Less Secure apps
8fq7wneg5#
quick answer : go to lesssecureapps session of your google account
than select turn on
more detail : if all your configurations are correct , this error might be because of django trying to login to your application and gmail does not recognize him
gcuhipw96#
I managed to solve this problem by enabling the email I'm going to use for 2-factor verification, generating an app password.
https://support.google.com/accounts/answer/6010255?hl=en&visit_id=637896899107643254-869975220&p=less-secure-apps&rd=1#zippy=%2Cuse-an-app-password
https://support.google.com/accounts/answer/185833
ddrv8njm7#
首先访问:https://myaccount.google.com/security并打开两步验证,打开两步验证后,您可以生成应用程序密码,生成密码后将其粘贴到EMAIL_HOST_PASSWORD的设置中。