Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trouble with Django sending email though smtp.gmail.com

I am trying to configure Django's send_email so I can send password reset emails to users. So far I've had no luck on getting it to work. I've set up a basic Gmail account (no Google App etc) and in my Django settings.py i have:

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

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
DEFAULT_FROM_EMAIL  = '[email protected]'

Then i try to test this by doing:

python manage.py shell
>>> from django.core.mail import send_mail
>>> send_mail('test', 'test', '[email protected]', ['[email protected]'])

and I get the error message

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Program Files\Python27\lib\site-packages\django\core\mail\__init__.py
", line 62, in send_mail
    connection=connection).send()
  File "C:\Program Files\Python27\lib\site-packages\django\core\mail\message.py"
, line 255, in send
    return self.get_connection(fail_silently).send_messages([self])
  File "C:\Program Files\Python27\lib\site-packages\django\core\mail\backends\sm
tp.py", line 88, in send_messages
    new_conn_created = self.open()
  File "C:\Program Files\Python27\lib\site-packages\django\core\mail\backends\sm
tp.py", line 55, in open
    self.connection.login(self.username, self.password)
  File "C:\Program Files\Python27\lib\smtplib.py", line 577, in login
    raise SMTPException("SMTP AUTH extension not supported by server.")
SMTPException: SMTP AUTH extension not supported by server.

Does anyone have an idea what is going on! Any hint is appreciated!

like image 311
Yue Y Avatar asked Nov 02 '13 20:11

Yue Y


4 Answers

You have made a typo in your settings. TLS should be set with EMAIL_USE_TLS not MAIL_USE_TLS. Not using TLS while connecting to 587 generates this error.

like image 125
WAF Avatar answered Oct 19 '22 07:10

WAF


This response is late for the question; but will hopefully help future readers of this thread.

As pointed out by @WAF, EMAIL_USE_TLS = True resovles this error.

Additionally, if the resolution is being validated via the shell command of the django manage tool, we'll have to restart the shell after adding the above setting & repeat the validation steps.

The following summarizes the minimal config for gmail validation from django shell:

In settings.py:

EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '<email.id>'
EMAIL_HOST_PASSWORD = '<pw>'
EMAIL_USE_TLS = True

In the shell of the django manage tool:

from django.core.mail import send_mail
send_mail('From django', 'Test email from dj manage', '[email protected]', ['[email protected]'])
... 1
like image 42
Snidhi Sofpro Avatar answered Oct 19 '22 07:10

Snidhi Sofpro


I found the problem... you have to use this code

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

instead of

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
like image 25
Salman Avatar answered Oct 19 '22 06:10

Salman


Make sure you have also set the EMAIL_BACKEND setting:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
like image 6
Timmy O'Mahony Avatar answered Oct 19 '22 07:10

Timmy O'Mahony