Django sending email Django sending email python python

Django sending email


Are you trying to use a gmail account? Maybe try this then:

EMAIL_HOST = 'smtp.gmail.com'EMAIL_HOST_USER = 'your-username@gmail.com'EMAIL_HOST_PASSWORD = 'your-password'EMAIL_PORT = 587EMAIL_USE_TLS = True

Then try test (django < 1.4) by

python manage.py shell>>> from django.core.mail import send_mail>>> send_mail('test email', 'hello world', to=['test@email.com'])

And if you use django 1.4 use this:

python manage.py shell>>> from django.core.mail import send_mail>>> send_mail('test email', 'hello world', 'your@email.com', ['test@email.com'])

If you're not using a gmail account and still getting problems then just try add the EMAIL_HOST_USER and EMAIL_HOST_PASSWORD to what you have.If you still have issues maybe your network is blocking you. Firewalls on your OS or router.

Thanks to knite for the updated syntax. Throw him a +1 and thanks to pranavk for letting me know about the syntax change in django 1.4


First Create an Application specific password

  1. Visit your Google Account security page. And Click 2-step verification:enter image description here

  1. Click App passwords at Google Account security page:enter image description here

  1. Create an App, select Mail and give a name:enter image description here

  1. Note down the App Password:enter image description here

Then add the appropriate values to settings.py:

EMAIL_HOST = 'smtp.gmail.com'EMAIL_HOST_USER = 'your-username@gmail.com'EMAIL_HOST_PASSWORD = 'Application spectific password(for eg: smbumqjiurmqrywn)'EMAIL_PORT = 587EMAIL_USE_TLS = True

You can use the shell to test it:

python manage.py shell>>> from django.core.mail import send_mail>>> send_mail('Test', 'This is a test', 'your@email.com', ['toemail@email.com'],     fail_silently=False)


@mongoose_za has a great answer, but the syntax is a bit different in Django 1.4+.

Instead of:

send_mail('test email', 'hello world', to=['test@email.com'])

use

send_mail('test email', 'hello world', 'your@email.com', ['test@email.com'])

The first four arguments are required: subject, message, from_email, and recipient_list.