Mailgun: add AMPHTML support

This commit is contained in:
medmunds
2021-01-26 18:08:39 -08:00
committed by Mike Edmunds
parent d33c9ea4ed
commit d1ef61d3ba
4 changed files with 30 additions and 0 deletions

View File

@@ -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
~~~~~ ~~~~~

View File

@@ -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:

View File

@@ -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

View File

@@ -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")