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
- Visit your Google Account security page. And Click 2-step verification:
- Click
App passwords
at Google Account security page:
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.