Skip to main content

A Django email backend for Amazon's Simple Email Service

Project description

This is a minified fork of Harry Marr’s django-ses

Management UI and DKIM signing was removed, because:
Another reasons for the fork:
  • I need to have it running under Python 3,

  • I don’t need all the “additional” feature of django-ses.

Getting going

To get it running, you need to have Django (1.5>=) and Boto (>=2.32.0) installed in your system.

Installing boto:

pip install --upgrade boto

Install django-ses-backend:

pip install django-ses-backend

Add the following to your

EMAIL_BACKEND = 'django_ses_backend.SESBackend'

# These are optional -- if they're set as environment variables they won't
# need to be set here as well

# Additionally, you can specify an optional region, like so:
AWS_SES_REGION_NAME = 'us-east-1'

Alternatively, instead of AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY, you can include the following two settings values. This is useful in situations where you would like to use a separate access key to send emails via SES than you would to upload files via S3:


Now, when you use django.core.mail.send_mail, Simple Email Service will send the messages by default.

Since SES imposes a rate limit and will reject emails after the limit has been reached, django-ses will attempt to conform to the rate limit by querying the API for your current limit and then sending no more than that number of messages in a two-second period (which is half of the rate limit, just to be sure to stay clear of the limit). This is controlled by the following setting:

AWS_SES_AUTO_THROTTLE = 0.5 # (default; safety factor applied to rate limit)

To turn off automatic throttling, set this to None.

Django Builtin-in Error Emails

If you’d like Django’s Builtin Email Error Reporting to function properly (actually send working emails), you’ll have to explicitly set the SERVER_EMAIL setting to one of your SES-verified addresses. Otherwise, your error emails will all fail and you’ll be blissfully unaware of a problem.

Note: You will need to sign up for SES and verify any emails you’re going to use in the from_email argument to django.core.mail.send_email(). Boto has a verify_email_address() method:

Full List of Settings


Required. Your API keys for Amazon SES.


Required. Alternative API keys for Amazon SES. This is useful in situations where you would like to use separate access keys for different AWS services.


Optionally specify what region your SES service is using. Details:


Instruct Amazon SES to forward bounced emails and complaints to this email. For more information please refer to


If you’d like to fix a bug, add a feature, etc

  1. Start by opening an issue.

    Be explicit so that project collaborators can understand and reproduce the issue, or decide whether the feature falls within the project’s goals. Code examples can be useful, too.

  2. File a pull request.

    You may write a prototype or suggested fix.

  3. Write and run tests.

    Write your own test showing the issue has been resolved, or the feature works as intended.

Running Tests

To run the tests:


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-ses-backend-0.1.1.tar.gz (7.0 kB view hashes)

Uploaded source

Built Distribution

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page