summaryrefslogtreecommitdiff
path: root/tests/mail/tests.py
diff options
context:
space:
mode:
authorgreg <marianigregory@pm.me>2025-01-30 15:04:29 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2025-01-31 12:55:57 +0100
commit2146bd1261905f74df615ebfa1ac56dd735baee8 (patch)
tree8b96727575464a218cc5377f9b5244815e723ecf /tests/mail/tests.py
parentb406907af53cfcecd4dba36894ca96e888956ff4 (diff)
[5.2.x] Fixed #36119 -- Fixed UnicodeEncodeError when attaching a file with 8bit Content-Transfer-Encoding.
Backport of 89e28e13ecbf9fbcf235e16d453c08bbf2271244 from main.
Diffstat (limited to 'tests/mail/tests.py')
-rw-r--r--tests/mail/tests.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/mail/tests.py b/tests/mail/tests.py
index 12cbc8e874..fe76974862 100644
--- a/tests/mail/tests.py
+++ b/tests/mail/tests.py
@@ -913,6 +913,30 @@ class MailTests(MailTestsMixin, SimpleTestCase):
self.assertEqual(content, b"\xff")
self.assertEqual(mimetype, "application/octet-stream")
+ def test_attach_8bit_rfc822_message_non_ascii(self):
+ """
+ Attaching a message that uses 8bit content transfer encoding for
+ non-ASCII characters should not raise a UnicodeEncodeError (#36119).
+ """
+ attachment = dedent(
+ """\
+ Subject: A message using 8bit CTE
+ Content-Type: text/plain; charset=utf-8
+ Content-Transfer-Encoding: 8bit
+
+ ¡8-bit content!
+ """
+ ).encode()
+ email = EmailMessage()
+ email.attach("attachment.eml", attachment, "message/rfc822")
+ attachments = self.get_raw_attachments(email)
+ self.assertEqual(len(attachments), 1)
+ self.assertEqual(attachments[0].get_content_type(), "message/rfc822")
+ attached_message = attachments[0].get_content()
+ self.assertEqual(attached_message.get_content().rstrip(), "¡8-bit content!")
+ self.assertEqual(attached_message["Content-Transfer-Encoding"], "8bit")
+ self.assertEqual(attached_message.get_content_type(), "text/plain")
+
def test_attach_mime_image(self):
"""
EmailMessage.attach() docs: "You can pass it