A Django email backend for Azure Communication Email service.
Project description
Django Azure Communication Email
A Django email backend for Azure Communication Email service.
Installation
Run the following on your system:
pip install django-azure-communication-email
Then, add these settings to your Django settings.py:
EMAIL_BACKEND = 'django_azure_communication_email.EmailBackend'
AZURE_COMMUNICATION_CONNECTION_STRING = '...'
# OR
AZURE_KEY_CREDENTIAL = '...'
AZURE_COMMUNICATION_ENDPOINT = '...'
If you prefer to use Azure Active Directory authentication, you can use the
following settings.py instead:
EMAIL_BACKEND = 'django_azure_communication_email.EmailBackend'
AZURE_COMMUNICATION_ENDPOINT = '...'
# Note: make sure to set the following environment variables:
# AZURE_TENANT_ID, AZURE_CLIENT_ID, AZURE_CLIENT_SECRET
Now, when you use django.core.mail.send_mail, Azure Communication Email
service will send the messages by default.
Configuring Retry Policy
By default, the Azure SDK will retry failed requests with exponential backoff (up to 10 total retries). This can cause blocking issues when rate limits are hit, as workers may wait for extended periods (an hour or more) trying to send emails.
You can customize the retry behavior by configuring a RetryPolicy in your
settings.py:
from azure.core.pipeline.policies import RetryPolicy
# Example 1: Disable retries completely (fail immediately)
AZURE_COMMUNICATION_RETRY_POLICY = RetryPolicy.no_retries()
# Example 2: Reduce retries for faster failure (3 retries instead of 10)
AZURE_COMMUNICATION_RETRY_POLICY = RetryPolicy(
retry_total=3,
retry_backoff_factor=0.4, # Shorter backoff time
)
# Example 3: Increase retries for better reliability
AZURE_COMMUNICATION_RETRY_POLICY = RetryPolicy(
retry_total=15,
retry_backoff_factor=1.0, # Longer backoff time
retry_backoff_max=180, # Max 3 minutes between retries
)
For detailed RetryPolicy configuration options, see the
Azure SDK documentation.
Running Tests
To run the tests::
python runtests.py
If you want to debug the tests, just add this file as a python script to your IDE run configuration.
Creating a Release
To create a release:
- Run
poetry version {patch|minor|major}as explained in the docs. This will update the version inpyproject.toml. - Commit that change and use git to tag that commit with a version that matches the pattern
v*.*.*. - Push the tag and the commit (note some IDEs don't push tags by default).
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_azure_communication_email-1.6.0.tar.gz.
File metadata
- Download URL: django_azure_communication_email-1.6.0.tar.gz
- Upload date:
- Size: 9.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
972e5952722c04b0de024245411f9f57b7200ff81f7e703df47a6cc3dd4b1af2
|
|
| MD5 |
879ad639fe85991599b528d175c4f0ce
|
|
| BLAKE2b-256 |
2918ff1b01030e0ddec1dd2a3ac0001a16e1527f4650f17022b741c19c9ecde9
|
File details
Details for the file django_azure_communication_email-1.6.0-py3-none-any.whl.
File metadata
- Download URL: django_azure_communication_email-1.6.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bda072e03267ced3757516fecb6e9ebeb42c47928eeeef935f4d7ab3e7e82699
|
|
| MD5 |
9d5d96d0cdac9cd26a6d676247b41102
|
|
| BLAKE2b-256 |
7a862c2de68658b556c326ed46b035c5ae140e26b97ac366eb7f93d6c361beae
|