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:
|
if len(tags) > 1:
|
||||||
self.unsupported_feature('multiple tags (%r)' % tags)
|
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):
|
def set_track_opens(self, track_opens):
|
||||||
self.data["TrackOpens"] = 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.metadata` Yes Yes No Yes Yes
|
||||||
:attr:`~AnymailMessage.send_at` 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.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
|
:attr:`~AnymailMessage.track_opens` Yes Yes Yes Yes Yes
|
||||||
|
|
||||||
.. rubric:: :ref:`templates-and-merge`
|
.. rubric:: :ref:`templates-and-merge`
|
||||||
|
|||||||
@@ -87,9 +87,7 @@ messages.)
|
|||||||
Limitations and quirks
|
Limitations and quirks
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Postmark has excellent support for standard email functionality, but does
|
Postmark does not support a few tracking and reporting additions offered by other ESPs.
|
||||||
not support all the tracking and reporting additions offered by some other
|
|
||||||
ESPs.
|
|
||||||
|
|
||||||
Anymail normally raises an :exc:`~anymail.exceptions.AnymailUnsupportedFeature`
|
Anymail normally raises an :exc:`~anymail.exceptions.AnymailUnsupportedFeature`
|
||||||
error when you try to send a message using features that Postmark doesn't support
|
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`
|
Postmark does not support attaching :attr:`~anymail.message.AnymailMessage.metadata`
|
||||||
to messages.
|
to messages.
|
||||||
|
|
||||||
**No click-tracking**
|
|
||||||
Postmark supports :attr:`~anymail.message.AnymailMessage.track_open`,
|
|
||||||
but not :attr:`~anymail.message.AnymailMessage.track_clicks`.
|
|
||||||
|
|
||||||
**No delayed sending**
|
**No delayed sending**
|
||||||
Postmark does not support :attr:`~anymail.message.AnymailMessage.send_at`.
|
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:
|
.. _postmark-templates:
|
||||||
|
|
||||||
|
|||||||
@@ -325,8 +325,15 @@ class PostmarkBackendAnymailFeatureTests(PostmarkBackendMockAPITestCase):
|
|||||||
|
|
||||||
def test_track_clicks(self):
|
def test_track_clicks(self):
|
||||||
self.message.track_clicks = True
|
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):
|
def test_template(self):
|
||||||
self.message.template_id = 1234567
|
self.message.template_id = 1234567
|
||||||
@@ -369,6 +376,7 @@ class PostmarkBackendAnymailFeatureTests(PostmarkBackendMockAPITestCase):
|
|||||||
self.assertNotIn('TemplateId', data)
|
self.assertNotIn('TemplateId', data)
|
||||||
self.assertNotIn('TemplateModel', data)
|
self.assertNotIn('TemplateModel', data)
|
||||||
self.assertNotIn('TrackOpens', data)
|
self.assertNotIn('TrackOpens', data)
|
||||||
|
self.assertNotIn('TrackLinks', data)
|
||||||
|
|
||||||
def test_esp_extra(self):
|
def test_esp_extra(self):
|
||||||
self.message.esp_extra = {
|
self.message.esp_extra = {
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ class PostmarkBackendIntegrationTests(SimpleTestCase, AnymailTestMixin):
|
|||||||
# no metadata, send_at, track_clicks support
|
# no metadata, send_at, track_clicks support
|
||||||
tags=["tag 1"], # max one tag
|
tags=["tag 1"], # max one tag
|
||||||
track_opens=True,
|
track_opens=True,
|
||||||
|
track_clicks=True,
|
||||||
)
|
)
|
||||||
message.attach("attachment1.txt", "Here is some\ntext for you", "text/plain")
|
message.attach("attachment1.txt", "Here is some\ntext for you", "text/plain")
|
||||||
message.attach("attachment2.csv", "ID,Name\n1,Amy Lina", "text/csv")
|
message.attach("attachment2.csv", "ID,Name\n1,Amy Lina", "text/csv")
|
||||||
|
|||||||
Reference in New Issue
Block a user