Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

A Django email backend for Amazon's Simple Email Service

Project Description
==================
Django-SES-backend
==================

.. image:: https://travis-ci.org/piotrbulinski/django-ses-backend.svg?branch=master
:target: https://travis-ci.org/piotrbulinski/django-ses-backend

This is a minified fork of Harry Marr's django-ses_

Management UI and DKIM signing was removed, because:
- AWS can do automatic DKIM signing for you: http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html,
- It's backend, so no UI is expected from it.

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_.

.. _django-ses: https://github.com/hmarr/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 settings.py::

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
AWS_ACCESS_KEY_ID = 'YOUR-ACCESS-KEY-ID'
AWS_SECRET_ACCESS_KEY = 'YOUR-SECRET-ACCESS-KEY'

# Additionally, you can specify an optional region, like so:
AWS_SES_REGION_NAME = 'us-east-1'
AWS_SES_REGION_ENDPOINT = 'email.us-east-1.amazonaws.com'

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::

AWS_SES_ACCESS_KEY_ID = 'YOUR-ACCESS-KEY-ID'
AWS_SES_SECRET_ACCESS_KEY = 'YOUR-SECRET-ACCESS-KEY'

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: https://github.com/boto/boto/blob/master/boto/ses/connection.py

.. _Builtin Email Error Reporting: http://docs.djangoproject.com/en/1.2/howto/error-reporting/
.. _Django: http://djangoproject.com
.. _Boto: http://boto.cloudhackers.com/
.. _SES: http://aws.amazon.com/ses/

Full List of Settings
=====================

``AWS_ACCESS_KEY_ID``, ``AWS_SECRET_ACCESS_KEY``
*Required.* Your API keys for Amazon SES.

``AWS_SES_ACCESS_KEY_ID``, ``AWS_SES_SECRET_ACCESS_KEY``
*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.

``AWS_SES_REGION_NAME``, ``AWS_SES_REGION_ENDPOINT``
Optionally specify what region your SES service is using. Details:
http://readthedocs.org/docs/boto/en/latest/ref/ses.html#boto.ses.regions

``AWS_SES_RETURN_PATH``
Instruct Amazon SES to forward bounced emails and complaints to this email.
For more information please refer to http://aws.amazon.com/ses/faqs/#38

Contributing
============
If you'd like to fix a bug, add a feature, etc

#. 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.

#. File a pull request.
You may write a prototype or suggested fix.

#. 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::

python runtests.py
Release History

Release History

This version
History Node

0.1.1

History Node

0.1.0

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django_ses_backend-0.1.1-py2.py3-none-any.whl (10.8 kB) Copy SHA256 Checksum SHA256 3.4 Wheel Aug 1, 2014
django-ses-backend-0.1.1.tar.gz (7.0 kB) Copy SHA256 Checksum SHA256 Source Aug 1, 2014

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting