A Django email backend for Amazon's Simple Email Service
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.
pip install --upgrade boto
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
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
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
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.
To run the tests:
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for django_ses_backend-0.1.1-py2.py3-none-any.whl