Skip to content

Release 2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Nov 17:07
· 1 commit to master since this release
99a58dc

Added

  • Support for Python 3.11–3.15.
  • Layout templates: TemplateType and LayoutTemplate on templates.create, validate and all, LayoutTemplate on templates.edit, and templates.push to copy templates between servers.
  • on_exception signal exported from postmarker.django, next to pre_send and post_send. #213
  • Servers API for the account: servers.all, get, create, edit and delete, and PostmarkClient with only an account token.
  • ConfirmationPersonalNote on senders.create and senders.edit.
  • Support for Django 5.2, 6.0 and 6.1.
  • Message Streams API: message_streams.all, get, create, edit, archive and unarchive.
  • Message clicks: messages.outbound.clicks.all and get, OutboundMessage.clicks(), and a link click webhook wrapper. #169
  • Support for email.message.EmailMessage (the modern email API) wherever MIME messages are accepted.
  • Suppressions API: suppressions.all, create and delete per message stream. #197
  • Spam complaint and subscription change webhook wrappers: bounces.SpamComplaint and suppressions.SubscriptionChange. #215
  • Type annotations and py.typed marker.

Changed

  • Attachment content from MIME parts sent as single-line base64, without MIME line breaks.
  • Django email backend raising ClientError with Postmark's error_code (the first failure's for batches) instead of a plain PostmarkerException. #177

Removed

  • Support for Python 3.6–3.9.

Fixed

  • postmark_request.return_value incorrectly being an internal sentinel on Python 3.11+ (it should be a configurable mock).
  • send_batch and send_template_batch incorrectly raising an empty ValueError for a list of emails (it should explain to pass them as separate arguments). #212
  • Django email backend incorrectly failing with ValueError on Django 6.0+. #221
  • Text attachments from MIME messages, including the Django backend, incorrectly sent without base64 encoding, which Postmark rejects. #189
  • all() for bounces, messages and opens incorrectly requesting past Postmark's limit of 10,000 for count + offset, which Postmark rejects (it should stop at the limit). #194
  • Django email backend incorrectly emitting RemovedInDjango2028Warning for fail_silently on Django 6.1+.
  • Django email backend incorrectly dropping the MAILERS alias on Django 6.1+, which hid unknown OPTIONS.
  • Email and EmailTemplate string representation incorrectly showing None (it should show the sender and recipients). #211
  • call on API managers incorrectly ignoring an explicit token_type (it should only default to the manager's token type).

Security

  • Spam check requests incorrectly sending email content over plain HTTP (they should use HTTPS).