mirror of
https://github.com/pacnpal/django-anymail.git
synced 2025-12-20 03:41:05 -05:00
Mailgun: add AMPHTML support
This commit is contained in:
@@ -30,6 +30,12 @@ vNext
|
|||||||
|
|
||||||
*Unreleased changes*
|
*Unreleased changes*
|
||||||
|
|
||||||
|
Features
|
||||||
|
~~~~~~~~
|
||||||
|
|
||||||
|
* **Mailgun:** Add support for AMP for Email
|
||||||
|
(via ``message.attach_alternative(..., "text/x-amp-html")``).
|
||||||
|
|
||||||
Fixes
|
Fixes
|
||||||
~~~~~
|
~~~~~
|
||||||
|
|
||||||
|
|||||||
@@ -310,6 +310,14 @@ class MailgunPayload(RequestsPayload):
|
|||||||
self.unsupported_feature("multiple html parts")
|
self.unsupported_feature("multiple html parts")
|
||||||
self.data["html"] = body
|
self.data["html"] = body
|
||||||
|
|
||||||
|
def add_alternative(self, content, mimetype):
|
||||||
|
if mimetype.lower() == "text/x-amp-html":
|
||||||
|
if "amp-html" in self.data:
|
||||||
|
self.unsupported_feature("multiple html parts")
|
||||||
|
self.data["amp-html"] = content
|
||||||
|
else:
|
||||||
|
super().add_alternative(content, mimetype)
|
||||||
|
|
||||||
def add_attachment(self, attachment):
|
def add_attachment(self, attachment):
|
||||||
# http://docs.python-requests.org/en/v2.4.3/user/advanced/#post-multiple-multipart-encoded-files
|
# http://docs.python-requests.org/en/v2.4.3/user/advanced/#post-multiple-multipart-encoded-files
|
||||||
if attachment.inline:
|
if attachment.inline:
|
||||||
|
|||||||
@@ -237,6 +237,13 @@ Limitations and quirks
|
|||||||
Your tracking webhooks will receive metadata values (either that you provided or the
|
Your tracking webhooks will receive metadata values (either that you provided or the
|
||||||
default empty string) for *every* key used with *any* recipient in the send.
|
default empty string) for *every* key used with *any* recipient in the send.
|
||||||
|
|
||||||
|
**AMP for Email**
|
||||||
|
Mailgun supports sending AMPHTML email content. To include it, use
|
||||||
|
``message.attach_alternative("...AMPHTML content...", "text/x-amp-html")``
|
||||||
|
(and be sure to also include regular HTML and/or text bodies, too).
|
||||||
|
|
||||||
|
.. versionadded:: 8.2
|
||||||
|
|
||||||
|
|
||||||
.. _undocumented API requirement:
|
.. _undocumented API requirement:
|
||||||
https://mailgun.uservoice.com/forums/156243-feature-requests/suggestions/35668606
|
https://mailgun.uservoice.com/forums/156243-feature-requests/suggestions/35668606
|
||||||
|
|||||||
@@ -301,6 +301,15 @@ class MailgunBackendStandardEmailTests(MailgunBackendMockAPITestCase):
|
|||||||
with self.assertRaises(AnymailUnsupportedFeature):
|
with self.assertRaises(AnymailUnsupportedFeature):
|
||||||
self.message.send()
|
self.message.send()
|
||||||
|
|
||||||
|
def test_amp_html_alternative(self):
|
||||||
|
# Mailgun *does* support text/x-amp-html alongside text/html
|
||||||
|
self.message.attach_alternative("<p>HTML</p>", "text/html")
|
||||||
|
self.message.attach_alternative("<p>And AMP HTML</p>", "text/x-amp-html")
|
||||||
|
self.message.send()
|
||||||
|
data = self.get_api_call_data()
|
||||||
|
self.assertEqual(data["html"], "<p>HTML</p>")
|
||||||
|
self.assertEqual(data["amp-html"], "<p>And AMP HTML</p>")
|
||||||
|
|
||||||
def test_alternatives_fail_silently(self):
|
def test_alternatives_fail_silently(self):
|
||||||
# Make sure fail_silently is respected
|
# Make sure fail_silently is respected
|
||||||
self.message.attach_alternative("{'not': 'allowed'}", "application/json")
|
self.message.attach_alternative("{'not': 'allowed'}", "application/json")
|
||||||
|
|||||||
Reference in New Issue
Block a user