skillfed

django-ses

A Django email backend for Amazon's Simple Email Service (SES)

django-ses v4.7.2 1.7M downloads/30d#3,649 on PyPI1,087
Permissive license MIT Active released

What it is and what it does

Django-SES is a drop-in replacement for Django's default email backend that sends mail through Amazon's Simple Email Service instead of SMTP. It depends on boto3 to communicate with AWS and integrates seamlessly with Django's standard mail API—your existing send_mail() calls work unchanged. The package handles SES rate limiting automatically and provides optional SNS webhook integration to track bounce, complaint, delivery, open, and click events in real time.

Beyond basic sending, django-ses offers email receiving capabilities via SES Email receiving, built-in bounce and complaint blacklisting to suppress problematic addresses, and support for SES configuration sets and global endpoints for high-availability deployments. It supports Django 3.2 through 6.0 and Python 3.8 through 3.14, making it compatible with current and near-future Django/Python versions.

Use it for:

  • Replace SMTP infrastructure with AWS SES to eliminate mail server maintenance and leverage free inbound SES traffic from EC2 instances.
  • Track email delivery status and automatically blacklist bouncing or complained-about addresses using SNS webhook events.
  • Send high-volume transactional email (password resets, notifications, alerts) with built-in rate limiting to stay within SES quotas.
  • Receive and programmatically process inbound emails via SES Email receiving without maintaining POP/IMAP infrastructure.
  • Improve email deliverability by using SES's Easy DKIM feature and avoiding manual PTR/reverse DNS configuration.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

A Django email backend that routes outgoing mail through Amazon SES instead of traditional SMTP, with support for bounce/complaint tracking and email receiving via SNS webhooks.

Yes, if you are already on AWS or plan to be. Django-SES is actively maintained, has no known vulnerabilities, installs with low friction, and is MIT-licensed. It is a true drop-in replacement for Django's mail backend—no code changes required—and adds real value through bounce/complaint tracking and SES-specific features like rate limiting and DKIM signing. Skip it only if you need SMTP compatibility or are not using AWS.

Install

django-ses on PyPI

pip

pip install django-ses

uv

uv add django-ses

poetry

poetry add django-ses

Installing django-ses

Before you install

Low friction install with a pure-Python wheel and four runtime dependencies (boto3, django, backports-zoneinfo, importlib-metadata). Actively maintained as of 2026-05-19 with 1087 repository stars and a release within the past 175 days.

License in practice

MIT license (permissive) places no restrictions on commercial or private use, modification, or redistribution—standard terms for open-source Python libraries.

Quickstart

pip install django-ses

# In settings.py:
EMAIL_BACKEND = 'django_ses.SESBackend'
AWS_ACCESS_KEY_ID = 'YOUR-ACCESS-KEY-ID'
AWS_SECRET_ACCESS_KEY = 'YOUR-SECRET-ACCESS-KEY'
AWS_SES_REGION_NAME = 'us-west-2'

# Then use Django's standard mail API:
from django.core.mail import send_mail
send_mail('Subject', 'Message', 'from@example.com', ['to@example.com'])

Requires AWS credentials (access key and secret key, or IAM role) and an AWS account with SES enabled in your target region.

Verify before relying

  • Whether the built-in blacklist for bounces and complaints integrates with external email validation services or only maintains an internal list.
  • Performance characteristics when handling high-volume email sending (the description mentions high-volume support but does not quantify throughput).
  • Whether the SESv2 client and global endpoint features are production-ready or still experimental.

Package facts

License MIT (permissive)
Python support supports the current Python release (>=3.8)
Install friction low — pure-Python wheel
Runtime dependencies 4 — backports-zoneinfo, boto3, django, importlib-metadata
Maintenance actively maintained — 175 days since the last release
Last repo commit
First released
Downloads 1,689,153/month — #3,649 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: django_ses-4.7.2-py3-none-any.whl

Development Status :: 5 - Production/StableFramework :: DjangoFramework :: Django :: 3.2Framework :: Django :: 4.2Framework :: Django :: 5.2Framework :: Django :: 6.0Intended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Topic :: Software Development :: Libraries :: Python Modules

Tags

django email backend amazon sessend emails via aws simple email servicedjango mail through amazon sesses email backend djangoaws ses django integrationbounce complaint tracking djangodjango email delivery monitoring
django-integrationaws-sesemail-delivery

More Python Modules packages