updates to README.md addition of CONTRIBUTING.md work on tests and requirments-dev.txt

This commit is contained in:
2025-04-18 16:31:05 -05:00
parent 3113fb953f
commit 39a972d688
8 changed files with 414 additions and 38 deletions

102
README.md
View File

@@ -1,26 +1,39 @@
# Django AWS SES
*(Badge to be activated upon PyPI release)*
A Django email backend for sending emails via Amazon Simple Email Service (SES).
## Features
- Send emails using AWS SES with DKIM signing support.
- Send emails using AWS SES with optional DKIM signing.
- Handle bounce, complaint, and delivery notifications via SNS webhooks.
- Filter recipients based on bounce/complaint history and domain validation.
- Admin dashboard for SES statistics and verified emails.
- Unsubscribe functionality with secure URL generation.
- Secure unsubscribe functionality with confirmation step.
## Installation
```bash
pip install django_aws_ses
```
## Requirements
- Python 3.8+
- Django 3.2+
- AWS SES account with verified domains/emails
## Setup
1. Add to `INSTALLED_APPS`:
## Quick Start
1. Install the package:
```bash
pip install django_aws_ses
```
2. Add to `INSTALLED_APPS` in `settings.py`:
```python
INSTALLED_APPS = [
...
@@ -28,7 +41,8 @@ pip install django_aws_ses
]
```
2. Configure settings in `settings.py`:
3. Configure AWS SES settings in `settings.py`:
```python
AWS_SES_ACCESS_KEY_ID = 'your-access-key'
AWS_SES_SECRET_ACCESS_KEY = 'your-secret-key'
@@ -37,35 +51,89 @@ pip install django_aws_ses
EMAIL_BACKEND = 'django_aws_ses.backends.SESBackend'
```
3. Apply migrations:
4. Apply migrations:
```bash
python manage.py migrate
```
4. (Optional) Enable DKIM signing:
5. Test email sending:
```python
from django.core.mail import send_mail
send_mail('Subject', 'Message', 'from@example.com', ['to@example.com'])
```
## Advanced Setup
### DKIM Signing (Optional)
To enable DKIM for email authentication:
1. Generate a DKIM key pair and configure in AWS SES.
2. Add to `settings.py`:
```python
DKIM_DOMAIN = 'example.com'
DKIM_PRIVATE_KEY = 'your-private-key'
DKIM_SELECTOR = 'ses'
```
5. Set up SNS webhook for bounce/complaint handling:
- Add the URL `your-domain.com/aws_ses/bounce/` to your SNS subscription.
- Ensure the view is accessible (e.g., CSRF-exempt).
### SNS Webhook for Notifications
To handle bounces, complaints, and deliveries:
1. Set up an SNS topic in AWS and subscribe the URL `your-domain.com/aws_ses/bounce/`.
2. Ensure the view is publicly accessible and CSRF-exempt (configured by default).
### Unsubscribe Functionality
- Users receive a secure unsubscribe link (`/aws_ses/unsubscribe/<uuid>/<hash>/`).
- A confirmation page prevents accidental unsubscribes (e.g., by email scanners).
- Re-subscribe option available on the same page.
## Usage
- Send emails using Djangos `send_mail` or `EmailMessage`.
- View SES statistics at `/aws_ses/status/` (superuser only).
- Unsubscribe users via `/aws_ses/unsubscribe/<uuid>/<hash>/`.
- **Send Emails**: Use Djangos `send_mail` or `EmailMessage` as usual.
- **View Statistics**: Access `/aws_ses/status/` (superuser only) for SES quotas and sending stats.
- **Manage Unsubscribes**: Users can unsubscribe or re-subscribe via the secure link.
## Development
To contribute:
1. Clone the repo: `git clone https://github.com/zeeksgeeks/django_aws_ses`
2. Install dependencies: `pip install -r requirements.txt`
3. Run tests: `python manage.py test`
### Running Tests
1. Install test dependencies:
```bash
pip install -r requirements-dev.txt
```
2. Run tests:
```bash
python manage.py test django_aws_ses
```
### Contributing
1. Clone the repo:
```bash
git clone https://git-vault.zeeksgeeks.com/zeeksgeeks/django_aws_ses
```
2. Install dependencies:
```bash
pip install -r requirements.txt
```
3. Create a feature branch and submit a pull request.
## License
MIT License. See [LICENSE](LICENSE) for details.
## Credits
Developed by Ray Jessop. Inspired by [django-ses](https://github.com/django-ses/django-ses).