This is an extended support release. Anymail v8.6 will receive security updates
and fixes for any breaking ESP API changes through at least May, 2023.
Fixes
* **Mailgun and SendGrid inbound:** Work around a Django limitation that
drops attachments with certain filenames. The missing attachments
are now simply omitted from the resulting inbound message. (In earlier
releases, they would cause a MultiValueDictKeyError in Anymail's
inbound webhook.)
Anymail documentation now recommends using Mailgun's and SendGrid's "raw MIME"
inbound options, which avoid the problem and preserve all attachments.
See Mailgun inbound <https://anymail.readthedocs.io/en/stable/esps/mailgun/#mailgun-inbound>__
and SendGrid inbound <https://anymail.readthedocs.io/en/stable/esps/sendgrid/#sendgrid-inbound>__
for details. (Thanks to @erikdrums_ for reporting and helping investigate the problem.)
Other
Mailgun: Document Mailgun's incorrect handling of display names containing
both non-ASCII characters and punctuation. (Thanks to @Flexonze_ for spotting and
reporting the issue, and to Mailgun's @b0d0nne11_ for investigating.)
Mandrill: Document Mandrill's incorrect handling of non-ASCII attachment filenames.
(Thanks to @Thorbenl_ for reporting the issue and following up with MailChimp.)
Documentation (for all releases) is now hosted at anymail.dev (moved from anymail.info).
Deprecations
* This will be the last Anymail release to support Django 2.0--2.2 and Python 3.5.
If these deprecations affect you and you cannot upgrade, set your requirements to
django-anymail~=8.6 (a "compatible release" specifier, equivalent to >=8.6,==8.*).
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)
Bumps django-anymail from 8.4 to 8.6.
Release notes
Sourced from django-anymail's releases.
Changelog
Sourced from django-anymail's changelog.
... (truncated)
Commits
ad08892
Release 8.62001b1c
Update ESP list in PyPI description, keywords09f21a5
Mailgun/SendGrid inbound: workaround Django filename issue6a2e30b
Docs: note Mailgun broken display name encoding33af7c3
Docs: note Mandrill broken attachment filenamesd22f03c
Docs: update Mandrill info4656b3d
Readme: clarify intro; update ESP list; update docs linksc7288b9
CI: Work around outdated pypy-3.8-v7.3.8 sqliteddeb938
Mandrill: re-enable integration tests41147b5
Mandrill: don't send unnecessary empty fieldsDependabot 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)