AWS mail for Django using SES and SNS.
Project description
A Django email backend for Amazon’s Simple Email Service (SES) v2 and utility views + signals for Amazon’s Simple Notification Service (SNS).
- Author:
Bas van Gaalen (http://github.com/webtweakers)
- License:
MIT
Features
Fully compatible with Django 6.0+ (Modern Python Email API).
Supports AWS SESv2 (via boto3).
Integrated with AWS SNS for bounce and complaint handling.
Flexible configuration via Django settings or environment variables.
Comprehensive signal support for tracking email lifecycles.
Installation
Install the package via pip or poetry:
pip install django-aws-mail
Configuration
Add the backend to your Django settings.py:
EMAIL_BACKEND = 'django_aws_mail.backends.EmailBackend'
Usage
The library provides a compose utility to easily create multipart emails (HTML and Text) using Django templates.
from django_aws_mail.utils import compose
# Create the message
message = compose(
recipients=["customer@example.com"],
subject="Welcome to our service!",
template="email/welcome.html",
context={"name": "John Doe"},
from_email="Support <support@example.com>"
)
# Send it
message.send()
Signals
The library provides a rich set of signals to track the lifecycle of your emails.
Backend Signals
These fire during the .send() process within your application:
mail_pre_send: Fired before the message is sent to AWS.
mail_post_send: Fired after a successful API response from AWS.
SNS Webhook Signals
These are triggered by AWS SNS notifications (via the provided webhook views):
mail_send: The email was successfully sent by SES.
mail_delivery: The email was successfully delivered to the recipient.
mail_bounce: The email bounced (Hard or Soft).
mail_complaint: The recipient marked the email as spam.
mail_reject: SES rejected the email (e.g., due to virus or blacklisting).
mail_delivery_delay: There is a delay in delivering the email.
mail_open: The recipient opened the email (requires SES tracking).
mail_click: The recipient clicked a link (requires SES tracking).
Example Usage:
from django.dispatch import receiver
from django_aws_mail.signals import mail_bounce, mail_complaint
@receiver(mail_bounce)
def handle_bounce(sender, message_id, bounce_type, **kwargs):
# Handle the bounce (e.g., deactivate the user's email)
print(f"Email {message_id} bounced. Type: {bounce_type}")
Development
To run the sandbox management command:
poetry install
poetry run manage
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_aws_mail-0.4.2.tar.gz.
File metadata
- Download URL: django_aws_mail-0.4.2.tar.gz
- Upload date:
- Size: 16.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.5 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee0741ac6e22e1dd22aecdf880376fa49afa784041ddd4e1a164d4dbfc4ba13f
|
|
| MD5 |
686209618a9aded36d33ae274965de41
|
|
| BLAKE2b-256 |
2a517ba31042464369cc78dd1469af7ede62d8507b42fbb2e24194e1acebce43
|
File details
Details for the file django_aws_mail-0.4.2-py3-none-any.whl.
File metadata
- Download URL: django_aws_mail-0.4.2-py3-none-any.whl
- Upload date:
- Size: 18.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.12.5 Darwin/25.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03b94dc6db167ac109beacb97adfc3a9ab409cc6f099751419e1c10c1ba7cb45
|
|
| MD5 |
692f0faccc9d1911234d273f69e63d09
|
|
| BLAKE2b-256 |
72512be8ec5948c4238509f4f4f1894d5c981ca825805fc51c136e01c5ff5f61
|