Mailjet deleted the Anymail testing account without notice.
Recreating the account changed the test template id. Move
the id to an environment variable to simplify changing it.
In Amazon SES webhook views (tracking and inbound):
- Close boto3 clients after use. (Not strictly required, but doesn't hurt.
Amazon SES backend was already doing this.)
- Break out some webhook functionality to simplify subclassing.
(E.g., to handle S3 object encryption through outside tooling, as
AWS hasn't released a Python version of their S3 encryption client.)
For CI/CD tasks not testing a specific Python version, switch to Python 3.12.
(Had been using mixture of 3.10 and 3.11. GitHub's ubuntu-22.04 runner has
Python 3.10 installed by default, but 3.12 should be in the tool cache.)
- Fix signature checking to avoid false validation errors
on webhook payloads including `/` (including all "clicked"
and most "opened" events). And in general, avoid depending
on specific details of Unisender Go's JSON serialization.
(Fixes #398.)
- Handle "use single event" webhook option (which has a different
payload format).
- Verify basic auth when Anymail's WEBHOOK_SECRET is used.
(This is optional for Unisender Go, since payloads are signed,
but it needs to be checked when enabled.)
- Treat "soft_bounced" events as "deferred" rather than "bounced",
since they will be retried later.
- Update validation error to reference Project ID if the webhook
is configured for a specific project.
- Expose Unisender Go's delivery_status code and unsubscribe form
comment as Anymail's normalized event.description.
- Update webhook tests based on actual payloads and add several
missing tests.
- Update docs to clarify webhook use with Unisender Go projects.
Read the Docs is changing their build process. Some docs/conf.py
manipulation they used to do automatically now must be manually
included.
https://about.readthedocs.com/blog/2024/07/addons-by-default/
Related changes:
* Drop our version-alert.js. RTD's new "addons" includes
equivalent warning on unreleased versions.
* Integrate Google Analytics via sphinxcontrib-googleanalytics
when GOOGLE_ANALYTICS_ID is set in docs build environment.
Add support for Brevo's new "Complained," "Error" and
"Loaded by proxy" events in Brevo tracking webhook.
Closes#385.
---------
Co-authored-by: Mike Edmunds <medmunds@gmail.com>
This project has always been licensed under the BSD 3-Clause license.
Certain automated tools (ahem, GitHub) have recently stoped recognizing the license text as being the BSD 3-Clause license.
This attempts to adjust the license text to match the tools' expectations. The licensing of the project HAS NOT CHANGED.
A combination of long display name and
commas (or other special characters) could
result in invalid address headers.
See details in #369.
Fix by removing unnecessary email.policy
override, which was causing new header folding
code to run with headers built using Compat32
legacy header encoding. The two don't mix.
Fixes#369
Raise an `AnymailUnsupportedFeature` error
when trying to use a `template_id` along with
other content payload fields that SparkPost
silently ignores when template_id is present.
For ESPs that have incorporated new owners
in their branding, identify the new owner
in the docs:
- Mailgun -> Sinch Mailgun
- Postmark -> ActiveCampaign Postmark
- SendGrid -> Twilio SendGrid
- SparkPost -> Bird ???
(Bird's rebranding of SparkPost seems to still
be a work in progress at this point. In fact,
Bird's rebranding of itself from MessageBird
seems incomplete.)
There are no current plans to rename ESP
backends, as the new owners seem to be mostly
keeping the original ESP names and domains for
API endpoints, docs, etc.
(Similarly, I'm not updating project keywords.)
Use new SES v2 SendBulkEmail ReplacementHeaders param
to support features that require custom headers,
including `extra_headers`, `metadata`,
`merge_metadata` and `tags`.
Update integration tests and docs
Closes#375
Add new `merge_headers` message option
for per-recipient headers with template sends.
* Support in base backend
* Implement in Amazon SES backend
(Requires boto3 >= 1.34.98.)
---------
Co-authored-by: Mike Edmunds <medmunds@gmail.com>
(See previous commit.)
- Maintain deprecated compatibility
versions on the old names/URLs.
(Split into separate commit
to make renamed files more
obvious.)