mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 03:41:05 -05:00
@@ -183,8 +183,8 @@ class PostmarkPayload(RequestsPayload):
|
||||
if len(tags) > 1:
|
||||
self.unsupported_feature('multiple tags (%r)' % tags)
|
||||
|
||||
# Postmark doesn't support click-tracking
|
||||
# def set_track_clicks(self, track_clicks):
|
||||
def set_track_clicks(self, track_clicks):
|
||||
self.data["TrackLinks"] = 'HtmlAndText' if track_clicks else 'None'
|
||||
|
||||
def set_track_opens(self, track_opens):
|
||||
self.data["TrackOpens"] = track_opens
|
||||
|
||||
@@ -34,7 +34,7 @@ Email Service Provider |Mailgun| |Mandrill| |Postmark|
|
||||
:attr:`~AnymailMessage.metadata` Yes Yes No Yes Yes
|
||||
:attr:`~AnymailMessage.send_at` Yes Yes No Yes Yes
|
||||
:attr:`~AnymailMessage.tags` Yes Yes Max 1 tag Yes Max 1 tag
|
||||
:attr:`~AnymailMessage.track_clicks` Yes Yes No Yes Yes
|
||||
:attr:`~AnymailMessage.track_clicks` Yes Yes Yes Yes Yes
|
||||
:attr:`~AnymailMessage.track_opens` Yes Yes Yes Yes Yes
|
||||
|
||||
.. rubric:: :ref:`templates-and-merge`
|
||||
|
||||
@@ -87,9 +87,7 @@ messages.)
|
||||
Limitations and quirks
|
||||
----------------------
|
||||
|
||||
Postmark has excellent support for standard email functionality, but does
|
||||
not support all the tracking and reporting additions offered by some other
|
||||
ESPs.
|
||||
Postmark does not support a few tracking and reporting additions offered by other ESPs.
|
||||
|
||||
Anymail normally raises an :exc:`~anymail.exceptions.AnymailUnsupportedFeature`
|
||||
error when you try to send a message using features that Postmark doesn't support
|
||||
@@ -107,13 +105,22 @@ see :ref:`unsupported-features`.
|
||||
Postmark does not support attaching :attr:`~anymail.message.AnymailMessage.metadata`
|
||||
to messages.
|
||||
|
||||
**No click-tracking**
|
||||
Postmark supports :attr:`~anymail.message.AnymailMessage.track_open`,
|
||||
but not :attr:`~anymail.message.AnymailMessage.track_clicks`.
|
||||
|
||||
**No delayed sending**
|
||||
Postmark does not support :attr:`~anymail.message.AnymailMessage.send_at`.
|
||||
|
||||
**Click-tracking**
|
||||
Postmark supports `several link-tracking options`_. Anymail treats
|
||||
:attr:`~anymail.message.AnymailMessage.track_clicks` as Postmark's
|
||||
"HtmlAndText" option when True.
|
||||
|
||||
If you would prefer Postmark's "HtmlOnly" or "TextOnly" link-tracking, you could
|
||||
either set that as a Postmark server-level default (and use `message.track_clicks = False`
|
||||
to disable tracking for specific messages), or use something like
|
||||
`message.esp_extra = {'TrackLinks': "HtmlOnly"}` to specify a particular option.
|
||||
|
||||
.. _several link-tracking options:
|
||||
http://developer.postmarkapp.com/developer-link-tracking.html
|
||||
|
||||
|
||||
.. _postmark-templates:
|
||||
|
||||
|
||||
@@ -325,8 +325,15 @@ class PostmarkBackendAnymailFeatureTests(PostmarkBackendMockAPITestCase):
|
||||
|
||||
def test_track_clicks(self):
|
||||
self.message.track_clicks = True
|
||||
with self.assertRaisesMessage(AnymailUnsupportedFeature, 'track_clicks'):
|
||||
self.message.send()
|
||||
self.message.send()
|
||||
data = self.get_api_call_json()
|
||||
self.assertEqual(data['TrackLinks'], 'HtmlAndText')
|
||||
|
||||
# Also explicit "None" for False (to override server default)
|
||||
self.message.track_clicks = False
|
||||
self.message.send()
|
||||
data = self.get_api_call_json()
|
||||
self.assertEqual(data['TrackLinks'], 'None')
|
||||
|
||||
def test_template(self):
|
||||
self.message.template_id = 1234567
|
||||
@@ -369,6 +376,7 @@ class PostmarkBackendAnymailFeatureTests(PostmarkBackendMockAPITestCase):
|
||||
self.assertNotIn('TemplateId', data)
|
||||
self.assertNotIn('TemplateModel', data)
|
||||
self.assertNotIn('TrackOpens', data)
|
||||
self.assertNotIn('TrackLinks', data)
|
||||
|
||||
def test_esp_extra(self):
|
||||
self.message.esp_extra = {
|
||||
|
||||
@@ -53,6 +53,7 @@ class PostmarkBackendIntegrationTests(SimpleTestCase, AnymailTestMixin):
|
||||
# no metadata, send_at, track_clicks support
|
||||
tags=["tag 1"], # max one tag
|
||||
track_opens=True,
|
||||
track_clicks=True,
|
||||
)
|
||||
message.attach("attachment1.txt", "Here is some\ntext for you", "text/plain")
|
||||
message.attach("attachment2.csv", "ID,Name\n1,Amy Lina", "text/csv")
|
||||
|
||||
Reference in New Issue
Block a user