Liondancer
Liondancer

Reputation: 16479

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)

Upvotes: 23

Views: 34171

Answers (2)

Sabuhi Shukurov
Sabuhi Shukurov

Reputation: 1926

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"

Upvotes: 3

Joseph
Joseph

Reputation: 13208

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.

Upvotes: 52

Related Questions