Require Django 2.0 or later and Python 3. (For compatibility with Django 1.11 and Python 2.7, stay on the Anymail v7.2 LTS extended support branch by setting your requirements to django-anymail~=7.2.)
Mailjet: Upgrade to Mailjet's newer v3.1 send API. Most Mailjet users will not be affected by this change, with two exceptions: (1) Mailjet's v3.1 API does not allow multiple reply-to addresses, and (2) if you are using Anymail's esp_extra, you will need to update it for compatibility with the new API. (See docs.)
SparkPost: Call the SparkPost API directly, without using the (now unmaintained) Python SparkPost client library. The "sparkpost" package is no longer necessary and can be removed from your project requirements. Most SparkPost users will not be affected by this change, with two exceptions: (1) You must provide a SPARKPOST_API_KEY in your Anymail settings (Anymail does not check environment variables); and (2) if you use Anymail's esp_extra you will need to update it with SparkPost Transmissions API parameters.
As part of this change esp_extra now allows use of several SparkPost features, such as A/B testing, that were unavailable through the Python SparkPost library. (See docs.)
Remove Anymail internal code related to supporting Python 2 and older Django versions. This does not change the documented API, but may affect you if your code borrowed from Anymail's undocumented internals. (You should be able to switch to the Python standard library equivalents, as Anymail has done.)
AnymailMessageMixin now correctly subclasses Django's EmailMessage. If you use it as part of your own custom EmailMessage-derived class, and you start getting errors about "consistent method resolution order," you probably need to change your class's inheritance. (For some helpful background, see this comment about mixin superclass ordering.)
Features
SparkPost: Add support for subaccounts (new "SPARKPOST_SUBACCOUNT" Anymail setting), AMP for Email (via message.attach_alternative(..., "text/x-amp-html")), and A/B testing and other SparkPost sending features (via esp_extra). (See docs.)
v7.2.1
2020-08-05
Fixes
Inbound: Fix a Python 2.7-only UnicodeEncodeError when attachments have non-ASCII filenames. (Thanks to @kika115 for reporting it.)
v7.2 LTS
2020-07-25
This is an extended support release. Anymail v7.2 will receive security updates and fixes for any breaking ESP API changes through at least July, 2021.
Fixes
Amazon SES: Fix bcc, which wasn't working at all on non-template sends. (Thanks to @mwheels for reporting the issue.)
Mailjet: Fix TypeError when sending to or from addresses with display names containing commas (introduced in Django 2.2.15, 3.0.9, and 3.1).
SendGrid: Fix UnicodeError in inbound webhook, when receiving message using charsets other than utf-8, and not using SendGrid's "post raw" inbound parse option. Also update docs to recommend "post raw" with SendGrid inbound. (Thanks to @tcourtqtm for reporting the issue.)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language
- `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language
- `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language
- `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language
- `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com):
- Update frequency (including time of day and day of week)
- Pull request limits (per update run and/or open at any time)
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
Bumps django-anymail from 6.1.0 to 8.0.
Release notes
Sourced from django-anymail's releases.
Changelog
Sourced from django-anymail's changelog.
Commits
d44218f
Remove Python 2 support from packaging945e69f
Release 8.0109f484
Cleanup: use pathlib.Path in attach_image_file, test utils088d3c8
Cleanup: add reprs for AnymailStatus, AnymailRecipientStatus03dd15d
Cleanup: add reprs for Attachment, EmailAddressfeee8b5
Cleanup: simplify requests backend raise_for_statusa14276e
Cleanup: remove unused MailjetPayload property985143b
SparkPost: add subaccount support61660cd
SparkPost: call HTTP API directly [breaking]470ed2c
Test utils: add assertDictMatchesDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired)