Django-anymail

Latest version: v12.0

Safety actively analyzes 682404 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 10

10.1

-----

*2023-07-31*

Features
~~~~~~~~

* **Inbound:** Improve `AnymailInboundMessage`'s handling of inline content:

* Rename `inline_attachments` to `content_id_map`, more accurately reflecting its function.
* Add new `inlines` property that provides a complete list of inline content,
whether or not it includes a *Content-ID*. This is helpful for accessing
inline images that appear directly in a *multipart/mixed* body, such as those
created by the Apple Mail app.
* Rename `is_inline_attachment()` to just `is_inline()`.

The renamed items are still available, but deprecated, under their old names.
See `docs <http://anymail.dev/en/stable/inbound/#anymail.inbound.AnymailInboundMessage>`__.
(Thanks to `martinezleoml`_.)

* **Inbound:** `AnymailInboundMessage` now derives from Python's
`email.message.EmailMessage`, which provides improved compatibility with
email standards. (Thanks to `martinezleoml`_.)

* **Brevo (Sendinblue):** Sendinblue has rebranded to "Brevo." Change default
API endpoint to ``api.brevo.com``, and update docs to reflect new name. Anymail
still uses ``sendinblue`` in the backend name, for settings, etc., so there
should be no impact on your code. (Thanks to `sblondon`_.)

* **Brevo (Sendinblue):** Add support for inbound email. (See
`docs <https://anymail.dev/en/stable/esps/sendinblue/#sendinblue-inbound>`__.)

* **SendGrid:** Support multiple ``reply_to`` addresses.
(Thanks to `gdvalderrama`_ for pointing out the new API.)

Deprecations
~~~~~~~~~~~~

* **Inbound:** `AnymailInboundMessage.inline_attachments` and `.is_inline_attachment()`
have been renamed---see above.

10.0

-----

*2023-05-07*

Breaking changes
~~~~~~~~~~~~~~~~

* **Amazon SES:** The Amazon SES backend now sends using the SES v2 API.
Most projects should not require code changes, but you may need to update
your IAM permissions. See
`Migrating to the SES v2 API <https://anymail.dev/en/stable/esps/amazon_ses/#amazon-ses-v2>`__.

If you were using SES v2 under Anymail 9.1 or 9.2, change your
``EMAIL_BACKEND`` setting from ``amazon_sesv2`` to just ``amazon_ses``.

(If you are not ready to migrate to SES v2, an ``amazon_sesv1`` EmailBackend
is available. But Anymail will drop support for that later this year. See
`Using SES v1 (deprecated) <https://anymail.dev/en/stable/esps/amazon_ses/#amazon-ses-v1>`__.)

* **Amazon SES:** The "extra name" for installation must now be spelled with
a hyphen rather than an underscore: ``django-anymail[amazon-ses]``.
Be sure to update any dependencies specification (pip install, requirements.txt,
etc.) that had been using ``[amazon_ses]``. (This change is due to
package name normalization rules enforced by modern Python packaging tools.)

* **Mandrill:** Remove support for Mandrill-specific message attributes left over
from Djrill. These attributes have raised DeprecationWarnings since Anymail 0.3
(in 2016), but are now silently ignored. See
`Migrating from Djrill <https://anymail.dev/en/v10.0/esps/mandrill/#djrill-message-attributes>`__.

* Require Python 3.7 or later.

* Require urllib3 1.25 or later. (Drop a workaround for older urllib3 releases.
urllib3 is a requests dependency; version 1.25 was released 2019-04-29. Unless
you are pinning an earlier urllib3, this change should have no impact.)

Features
~~~~~~~~

* **Postmark inbound:**

* Handle Postmark's "Include raw email content in JSON payload"
inbound option. We recommend enabling this in Postmark's dashboard
to get the most accurate representation of received email.
* Obtain ``envelope_sender`` from *Return-Path* Postmark now provides.
(Replaces potentially faulty *Received-SPF* header parsing.)
* Add *Bcc* header to inbound message if provided. Postmark adds bcc
when the delivered-to address does not appear in the *To* header.

Other
~~~~~

* Modernize packaging. (Change from setup.py and setuptools
to pyproject.toml and hatchling.) Other than the ``amazon-ses``
naming normalization noted above, the new packaging should have
no impact. If you have trouble installing django-anymail v10 where
v9 worked, please report an issue including the exact install
command and pip version you are using.

9.2

-----

*2023-05-02*

Fixes
~~~~~

* Fix misleading error messages when sending with ``fail_silently=True``
and session creation fails (e.g., with Amazon SES backend and missing
credentials). (Thanks to `technolingo`_.)

* **Postmark inbound:** Fix spurious AnymailInvalidAddress in ``message.cc``
when inbound message has no Cc recipients. (Thanks to `Ecno92`_.)

* **Postmark inbound:** Add workaround for malformed test data sent by
Postmark's inbound webhook "Check" button. (See `304`_. Thanks to `Ecno92`_.)

Deprecations
~~~~~~~~~~~~

* This will be the last Anymail release to support Python 3.6
(which reached end-of-life on 2021-12-23).

Other
~~~~~

* Test against Django 4.2 release.

9.1

----

*2023-03-11*

Features
~~~~~~~~

* **Amazon SES:** Add support for sending through the Amazon SES v2 API
(not yet enabled by default; see Deprecations below;
`docs <https://anymail.dev/en/stable/esps/amazon_ses/#amazon-ses-v2>`__).

* **MailerSend:** Add support for this ESP
(`docs <https://anymail.dev/en/stable/esps/mailersend/>`__).

Deprecations
~~~~~~~~~~~~

* **Amazon SES:** Anymail will be switching to the Amazon SES v2 API.
Support for the original SES v1 API is now deprecated, and will be dropped in a
future Anymail release (likely in late 2023). Many projects will not
require code changes, but you may need to update your IAM permissions. See
`Migrating to the SES v2 API <https://anymail.dev/en/stable/esps/amazon_ses/#amazon-ses-v2>`__.

Other
~~~~~

* Test against Django 4.2 prerelease, Python 3.11 (with Django 4.2),
and PyPy 3.9.

* Use black, isort and doc8 to format code,
enforced via pre-commit. (Thanks to `tim-schilling`_.)

9.0

----

*2022-12-18*

Breaking changes
~~~~~~~~~~~~~~~~

* Require **Django 3.0 or later** and Python 3.6 or later. (For compatibility
with Django 2.x or Python 3.5, stay on the Anymail `v8.6 LTS`_ extended support
branch by setting your requirements to `django-anymail~=8.6`.)

Features
~~~~~~~~

* **Sendinblue:** Support delayed sending using Anymail's `send_at` option.
(Thanks to `dimitrisor`_ for noting Sendinblue's public beta release
of this capability.)
* Support customizing the requests.Session for requests-based backends,
and document how this can be used to mount an adapter that simplifies
automatic retry logic. (Thanks to `dgilmanAIDENTIFIED`_.)
* Confirm support for Django 4.1 and resolve deprecation warning regarding
``django.utils.timezone.utc``. (Thanks to `tim-schilling`_.)

Fixes
~~~~~

* **Postmark:** Handle Postmark's SubscriptionChange events as Anymail
unsubscribe, subscribe, or bounce tracking events, rather than "unknown".
(Thanks to `puru02`_ for the fix.)
* **Sendinblue:** Work around recent (unannounced) Sendinblue API change
that caused "Invalid headers" API error with non-string custom header
values. Anymail now converts int and float header values to strings.


Other
~~~~~

* Test on Python 3.11 with Django development (Django 4.2) branch.

8.6

--------

*2022-05-15*

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.dev/en/stable/esps/mailgun/#mailgun-inbound>`__
and `SendGrid inbound <https://anymail.dev/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.*`).

Page 2 of 10

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.