summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkalombo <nogamemorebrain@gmail.com>2017-04-07 15:23:25 +0500
committerTim Graham <timograham@gmail.com>2017-04-07 18:24:09 -0400
commit734e6bb2b884eb4681954e1d0c01097fe167f558 (patch)
tree927ba102e2b0cc82635e4d47073036c855807454
parenta95eba7d98e73e03770c82fdea6d9c3573c79f5d (diff)
[1.11.x] Fixed #28042 -- Fixed crash when using a two-tuple in EmailMessage's attachments arg.
Backport of dd001848920713fe616c03db6946762e8aa7c4e3 from master
-rw-r--r--django/core/mail/message.py8
-rw-r--r--docs/releases/1.11.1.txt3
-rw-r--r--tests/mail/tests.py7
3 files changed, 17 insertions, 1 deletions
diff --git a/django/core/mail/message.py b/django/core/mail/message.py
index 3cebbaf9d2..0bd522c04d 100644
--- a/django/core/mail/message.py
+++ b/django/core/mail/message.py
@@ -286,7 +286,13 @@ class EmailMessage(object):
self.from_email = from_email or settings.DEFAULT_FROM_EMAIL
self.subject = subject
self.body = body
- self.attachments = attachments or []
+ self.attachments = []
+ if attachments:
+ for attachment in attachments:
+ if isinstance(attachment, MIMEBase):
+ self.attach(attachment)
+ else:
+ self.attach(*attachment)
self.extra_headers = headers or {}
self.connection = connection
diff --git a/docs/releases/1.11.1.txt b/docs/releases/1.11.1.txt
index d1e054bb18..a10f3f47ef 100644
--- a/docs/releases/1.11.1.txt
+++ b/docs/releases/1.11.1.txt
@@ -15,3 +15,6 @@ Bugfixes
* Fixed a crash when using a ``__icontains`` lookup on a ``ArrayField``
(:ticket:`28038`).
+
+* Fixed a crash when using a two-tuple in ``EmailMessage``’s ``attachments``
+ argument (:ticket:`28042`).
diff --git a/tests/mail/tests.py b/tests/mail/tests.py
index 84e6934b52..7765a427c7 100644
--- a/tests/mail/tests.py
+++ b/tests/mail/tests.py
@@ -387,6 +387,13 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
self.assertEqual(payload[0].get_content_type(), 'multipart/alternative')
self.assertEqual(payload[1].get_content_type(), 'application/pdf')
+ def test_attachments_two_tuple(self):
+ msg = EmailMessage(attachments=[('filename1', 'content1')])
+ filename, content, mimetype = self.get_decoded_attachments(msg)[0]
+ self.assertEqual(filename, 'filename1')
+ self.assertEqual(content, b'content1')
+ self.assertEqual(mimetype, 'application/octet-stream')
+
def test_attachments_MIMEText(self):
txt = MIMEText('content1')
msg = EmailMessage(attachments=[txt])