Amazon SES SMTP with Django

GivP picture GivP · Dec 20, 2011 · Viewed 17.8k times · Source

I'm trying to use Amazon's new SMTP service for SES with Django 1.3.1 but I'm not having much luck.

I've created my SES SMTP credentials and have this in my settings:

EMAIL_USE_TLS = True
EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_HOST_USER = 'my-smtp-user'
EMAIL_HOST_PASSWORD = 'my-smtp-password'
EMAIL_PORT = 465

Then I try sending a test email (from and to verified email addresses):

from django.core.mail import send_mail

send_mail('Test subject', 'This is the body', '[email protected]',['[email protected]'], fail_silently=False)

But I get the following error:

SMTPServerDisconnected: Connection unexpectedly closed

I can telnet to the server:

telnet email-smtp.us-east-1.amazonaws.com 465

Any thoughts?

Thanks, G

Answer

GivP picture GivP · Dec 22, 2011

Thanks everyone for the recommendations but I finally found a much simpler solution that would allow me to use Django's built-in mail classes so I can still get my admin error email reports etc.

Thanks to this little beauty I was able to use SES SMTP without any problems:

https://github.com/bancek/django-smtp-ssl

Download and install (python setup.py install)

Then just change your settings to use this new email backend:

EMAIL_BACKEND = 'django_smtp_ssl.SSLEmailBackend'

The rest of the settings are as per normal:

EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'my_smtp_username'
EMAIL_HOST_PASSWORD = 'my_smtp_password'
EMAIL_USE_TLS = True

Nice.

G