pypi / postmarker
postmarker
What changed in postmarker 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-12.
3 breaking1 security27 new APIs and options1 behavior and defaults1 tooling11 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initpostmarker 244 changes
Breaking changes 3
Raises ClientError with Postmark's error_code instead of a plain PostmarkerException; batches use the first failure's error_code.
Attachment content from MIME parts is sent as single-line base64 without MIME line breaks.
Support for Python 3.6–3.9 has been removed.
Security 1
Spam check requests now use HTTPS instead of sending email content over plain HTTP.
New APIs and options 27
Adds a spam complaint webhook wrapper.
Adds ConfirmationPersonalNote to sender creation and editing.
Adds LayoutTemplate support to template creation, validation, listing and editing.
Adds a wrapper for link click webhooks.
Adds message stream listing.
Adds message stream archiving.
Adds message stream creation.
Adds message stream editing.
Adds message stream retrieval.
Adds message stream unarchiving.
Adds listing of outbound message clicks.
Adds retrieval of outbound message clicks.
Exports the on_exception signal from postmarker.django alongside pre_send and post_send.
Adds a clicks method to OutboundMessage.
Adds a PostmarkClient that uses only an account token.
Adds the py.typed marker.
Adds account server listing.
Adds account server creation.
Adds account server deletion.
Adds account server editing.
Adds account server retrieval.
Adds listing of suppressions per message stream.
Adds creation of suppressions per message stream.
Adds deletion of suppressions per message stream.
Adds a subscription change webhook wrapper.
Copies templates between servers.
Adds TemplateType for layout templates.
Behavior and default changes 1
Accepts the modern EmailMessage API wherever MIME messages are accepted.
Tooling 1
Adds type annotations.
Fixes and other changes 11
Stops pagination at Postmark's 10,000 limit for count plus offset.
API manager calls now honor an explicitly supplied token_type and only default to the manager's token type when it is not explicit.
Django 5.2, 6.0 and 6.1 are supported.
Fixes a ValueError that caused the backend to fail on Django 6.0+.
Stops emitting RemovedInDjango2028Warning for fail_silently on Django 6.1+.
Preserves the MAILERS alias on Django 6.1+ so unknown OPTIONS are not hidden.
String representations now show the sender and recipients instead of None.
Text attachments from MIME messages, including through the Django backend, are now base64 encoded as required by Postmark.
On Python 3.11+, return_value is now a configurable mock rather than an internal sentinel.
Python 3.11–3.15 are supported.
A list of emails now produces an explanatory ValueError directing callers to pass them as separate arguments.