Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django email with smtp.gmail SMTPAuthenticationError 534 Application-specific password required

I am trying to have django send emails but I am getting this error:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/django/core/mail/__init__.py", line 62, in send_mail
    return mail.send()
  File "/Library/Python/2.7/site-packages/django/core/mail/message.py", line 286, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "/Library/Python/2.7/site-packages/django/core/mail/backends/smtp.py", line 92, in send_messages
    new_conn_created = self.open()
  File "/Library/Python/2.7/site-packages/django/core/mail/backends/smtp.py", line 59, in open
    self.connection.login(self.username, self.password)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/smtplib.py", line 615, in login
    raise SMTPAuthenticationError(code, resp)
SMTPAuthenticationError: (534, '5.7.9 Application-specific password required. Learn more at\n5.7.9 http://support.google.com/accounts/bin/answer.py?answer=185833 v14sm3323298pbs.11 - gsmtp')

The link suggested my to perform a 2-step verification which I did but still no results.

In my settings.py

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = 'password'
EMAIL_PORT = 587

I tried testing this in django shell but got the error shown above:

>>> from django.core.mail import send_mail
>>> from django.conf import settings
>>> sub = "sup man"
>>> msg = "char lisss"
>>> from_user = settings.EMAIL_HOST_USER
>>> to = ["[email protected]"]
>>> send_mail(sub,msg,from_user,to, fail_silently=False)
like image 997
Liondancer Avatar asked Feb 10 '15 00:02

Liondancer


2 Answers

Because you use 2 factor authentication, you must create a password for this application to access your Google account without the 2 factor auth.

Perform all the steps on the Google support page to generate an application password, and then update your EMAIL_HOST_PASSWORD to use that, rather than your regular account password.

On this page: support.google.com/accounts/answer/185833 follow the steps under the heading "How to generate an App password". After you generate it, you need to use that password in your configuration.

like image 152
Joseph Avatar answered Sep 29 '22 11:09

Joseph


Well, you need to generate a password from your google account (2 factor authentication). It is one time shown. check this link for guide.

Afterward, page will prompt a password and paste it in your settings.py

EMAIL_HOST_PASSWORD "your password goes here"
like image 24
Sabuhi Shukurov Avatar answered Sep 29 '22 11:09

Sabuhi Shukurov