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.)
- Replace "SendinBlue" with "Brevo"
throughout the code.
- Maintain deprecated compatibility
versions on the old names/URLs.
(Split into separate commit
to make renamed files more
obvious.)
- Update docs to reflect change,
provide migration advice.
- Update integration workflow.
Move the big ESP feature matrix table
into a CSV file for easier maintenance.
Remove the doc8 line-length exception
the old table needed.
Docutils csv-table directive doesn't
support colspan on the subheadings
like the old table did. Add some JS
that replicates the old behavior.
(The new table is still readable even
with JS disabled.)
Resend's API no longer returns 403
responses for bad API keys (or 401
for missing auth header). Now, it just
never responds, leading to a TimeoutError.
Since this seems likely to be a Resend
bug, just disable the bad API key
integration test for now.
(Resend changed behavior sometime between
2023-12-07 and 2023-12-14, from our
scheduled integration test runs.)
GitHub status badge urls no longer allow
branch=TAG. Must use branch=BRANCH or
tag=TAG. (This was only visible in
published description on PyPI.)
(Actions job filter still requires branch=TAG_OR_BRANCH)
Replace generic `combine` with
specific `merge_dicts_deep`,
`merge_dicts_shallow`,
`merge_dicts_one_level` or
`concat_lists`, depending on
appropriate behavior for each
message attribute.
Fixes merging global `SEND_DEFAULTS`
with message `esp_extra` for ESP APIs
that use nested payload structures.
And clarifies intent for other properties.