Skip to content

Releases: anymail/django-anymail

v0.10

22 May 19:06
Compare
Choose a tag to compare

New features

  • Mailgun, SparkPost: Support multiple from addresses, as a comma-separated from_email string. (Not a list of strings, like the recipient fields.) RFC-5322 allows multiple from email addresses, and these two ESPs support it. Though as a practical matter, multiple from emails are either ignored or treated as a spam signal by receiving mail handlers. (See #60.)

Other changes

  • Fix crash sending forwarded email messages as attachments. (See #59.)
  • Mailgun: Fix webhook crash on bounces from some receiving mail handlers. (See #62.)
  • Improve recipient-parsing error messages and consistency with Django's SMTP backend. In particular, Django (and now Anymail) allows multiple, comma-separated email addresses in a single recipient string.

v0.9

04 Apr 19:16
Compare
Choose a tag to compare

Breaking changes

  • Mandrill, Postmark: Normalize soft-bounce webhook events to event_type 'bounced' (rather than 'deferred').

Other changes

  • Officially support released Django 1.11, including under Python 3.6.

v0.8

02 Feb 00:04
Compare
Choose a tag to compare

Breaking changes

  • All backends: Rename all Anymail backends to just EmailBackend, matching Django's naming convention. E.g., you should update:
    EMAIL_BACKEND = "anymail.backends.mailgun.MailgunBackend" # old
    to:
    EMAIL_BACKEND = "anymail.backends.mailgun.EmailBackend" # new

    The old names still work, but will issue a DeprecationWarning and will be removed in some future release (Apologies for this change; the old naming was a holdover from Djrill, and I wanted to establish consistency with other Django EmailBackends before Anymail 1.0. See #49.)

  • SendGrid: Update SendGrid backend to their newer Web API v3. This should be a transparent change for most projects. Exceptions: if you use SendGrid username/password auth, Anymail's esp_extra with "x-smtpapi", or multiple Reply-To addresses, please review the porting notes.

    The SendGrid v2 EmailBackend remains available if you prefer it, but is no longer the default.

Other changes

  • Mandrill: Fix bug in webhook signature validation when using basic auth via the WEBHOOK_AUTHORIZATION setting. (If you were using the MANDRILL_WEBHOOK_URL setting to work around this problem, you should be able to remove it. See #48.)
  • Test on Django 1.11 prerelease, including under Python 3.6.

v0.7

30 Dec 23:13
Compare
Choose a tag to compare

New features

  • Postmark: Support Postmark's new message delivery event in Anymail normalized tracking webhook. (Update your Postmark config to enable the new event. See docs.)
  • Handle virtually all uses of Django lazy translation strings as EmailMessage properties. (In earlier releases, these could sometimes lead to obscure exceptions or unexpected behavior with some ESPs. See #34.)

Other changes

  • [possibly-breaking] Fix a long-standing bug validating email addresses. If an address has a display name containing a comma or parentheses, RFC-5322 requires double-quotes around the display name ('"Widgets, Inc." <widgets@example.com>'). Anymail now raises a new AnymailInvalidAddress error for misquoted display names and other malformed addresses. (Previously, it silently truncated the address, leading to obscure exceptions or unexpected behavior. See #44.) In general, it's safest to always use double-quotes around all display names.
  • Mandrill: Simplify and document two-phase process for setting up Mandrill webhooks. (docs)

v0.6.1

01 Nov 20:41
Compare
Choose a tag to compare

Bug fixes

  • Mailgun and Mandrill: Support older Python 2.7.x versions in webhook validation (#39; thanks @sebbacon)
  • Postmark: Handle older-style 'Reply-To' in EmailMessage headers (#41)

v0.6

25 Oct 18:50
Compare
Choose a tag to compare

New features

  • Postmark: Add support for track_clicks (docs)

Other changes

  • Initialize AnymailMessage.anymail_status to empty status, rather than None; clarify docs around anymail_status availability (docs)
  • [possibly-breaking] SendGrid: Fix missing html or text template body when using template_id with an empty Django EmailMessage body. In the (extremely-unlikely) case you were relying on the earlier quirky behavior to not send your saved html or text template, you may want to verify that your SendGrid templates have matching html and text. (docs -- also see #32.)

v0.5

22 Aug 18:05
Compare
Choose a tag to compare

New features

  • Mailgun: Add MAILGUN_SENDER_DOMAIN setting
    docs

v0.4.2

24 Jun 19:32
Compare
Choose a tag to compare
  • SparkPost: fix API error "Both content object and template_id are specified" when using template_id (#24)

v0.4.1

22 Jun 22:53
Compare
Choose a tag to compare

New features

  • Add support for SparkPost
    docs
  • Test with Django 1.10 beta

Other changes

  • Requests-based backends (all but SparkPost) now raise
    AnymailRequestsAPIError for any requests.RequestException,
    for consistency and proper fail_silently behavior.
    (The exception will also be a subclass of the original RequestException,
    so no changes are required to existing code looking for specific
    requests failures.)

v0.4

23 Jun 00:45
Compare
Choose a tag to compare

(not released to PyPI)