----
*2018-05-30*
This is an extended support release. Anymail v3.x will receive security updates
and fixes for any breaking ESP API changes through at least April, 2019.
Breaking changes
~~~~~~~~~~~~~~~~
* Drop support for Python 3.3 (see `99`_).
* **SendGrid:** Fix a problem where Anymail's status tracking webhooks didn't always
receive the same `event.message_id` as the sent `message.anymail_status.message_id`,
due to unpredictable behavior by SendGrid's API. Anymail now generates a UUID for
each sent message and attaches it as a SendGrid custom arg named anymail_id. For most
users, this change should be transparent. But it could be a breaking change if you
are relying on a specific message_id format, or relying on message_id matching the
*Message-ID* mail header or SendGrid's "smtp-id" event field. (More details in the
`docs <https://anymail.dev/en/stable/esps/sendgrid/#sendgrid-message-id>`__;
also see `108`_.) Thanks to `joshkersey`_ for the report and the fix.
Features
~~~~~~~~
* Support Django 2.1 prerelease.
Fixes
~~~~~
* **Mailjet:** Fix tracking webhooks to work correctly when Mailjet "group events"
option is disabled (see `106`_).
Deprecations
~~~~~~~~~~~~
* This will be the last Anymail release to support Django 1.8, 1.9, and 1.10
(see `110`_).
* This will be the last Anymail release to support the legacy SendGrid v2 EmailBackend
(see `111`_). (SendGrid's newer v3 API has been the default since Anymail v0.8.)
If these deprecations affect you and you cannot upgrade, set your requirements to
`django-anymail~=3.0` (a "compatible release" specifier, equivalent to `>=3.0,==3.*`).