mirror of
https://github.com/django/django.git
synced 2025-06-03 10:39:12 +00:00
Refs #35581 -- Updated mail tests to include trailing newlines.
Python's modern email API will force a trailing newline onto all text/* bodies and attachments. Updated mail tests to include (and check for) the newline while still using the legacy email API. See https://github.com/python/cpython/issues/121515 which reasons that, apart from artificial test cases, most text content already ends in a newline. If it doesn't, adding one won't change the meaning.
This commit is contained in:
parent
a2f7b3a6a0
commit
a627829e7b
@ -173,11 +173,11 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
|
|
||||||
def test_ascii(self):
|
def test_ascii(self):
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
"Subject", "Content", "from@example.com", ["to@example.com"]
|
"Subject", "Content\n", "from@example.com", ["to@example.com"]
|
||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["Subject"], "Subject")
|
self.assertEqual(message["Subject"], "Subject")
|
||||||
self.assertEqual(message.get_payload(), "Content")
|
self.assertEqual(message.get_payload(), "Content\n")
|
||||||
self.assertEqual(message["From"], "from@example.com")
|
self.assertEqual(message["From"], "from@example.com")
|
||||||
self.assertEqual(message["To"], "to@example.com")
|
self.assertEqual(message["To"], "to@example.com")
|
||||||
|
|
||||||
@ -215,13 +215,13 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
def test_multiple_recipients(self):
|
def test_multiple_recipients(self):
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
"Subject",
|
"Subject",
|
||||||
"Content",
|
"Content\n",
|
||||||
"from@example.com",
|
"from@example.com",
|
||||||
["to@example.com", "other@example.com"],
|
["to@example.com", "other@example.com"],
|
||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["Subject"], "Subject")
|
self.assertEqual(message["Subject"], "Subject")
|
||||||
self.assertEqual(message.get_payload(), "Content")
|
self.assertEqual(message.get_payload(), "Content\n")
|
||||||
self.assertEqual(message["From"], "from@example.com")
|
self.assertEqual(message["From"], "from@example.com")
|
||||||
self.assertEqual(message["To"], "to@example.com, other@example.com")
|
self.assertEqual(message["To"], "to@example.com, other@example.com")
|
||||||
|
|
||||||
@ -671,7 +671,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
Regression for #12791 - Encode body correctly with other encodings
|
Regression for #12791 - Encode body correctly with other encodings
|
||||||
than utf-8
|
than utf-8
|
||||||
"""
|
"""
|
||||||
email = EmailMessage(body="Firstname Sürname is a great guy.")
|
email = EmailMessage(body="Firstname Sürname is a great guy.\n")
|
||||||
email.encoding = "iso-8859-1"
|
email.encoding = "iso-8859-1"
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertMessageHasHeaders(
|
self.assertMessageHasHeaders(
|
||||||
@ -682,14 +682,14 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
("Content-Transfer-Encoding", "quoted-printable"),
|
("Content-Transfer-Encoding", "quoted-printable"),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.assertEqual(message.get_payload(), "Firstname S=FCrname is a great guy.")
|
self.assertEqual(message.get_payload(), "Firstname S=FCrname is a great guy.\n")
|
||||||
|
|
||||||
def test_encoding_alternatives(self):
|
def test_encoding_alternatives(self):
|
||||||
"""
|
"""
|
||||||
Encode alternatives correctly with other encodings than utf-8.
|
Encode alternatives correctly with other encodings than utf-8.
|
||||||
"""
|
"""
|
||||||
text_content = "Firstname Sürname is a great guy."
|
text_content = "Firstname Sürname is a great guy.\n"
|
||||||
html_content = "<p>Firstname Sürname is a <strong>great</strong> guy.</p>"
|
html_content = "<p>Firstname Sürname is a <strong>great</strong> guy.</p>\n"
|
||||||
email = EmailMultiAlternatives(body=text_content)
|
email = EmailMultiAlternatives(body=text_content)
|
||||||
email.encoding = "iso-8859-1"
|
email.encoding = "iso-8859-1"
|
||||||
email.attach_alternative(html_content, "text/html")
|
email.attach_alternative(html_content, "text/html")
|
||||||
@ -707,7 +707,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.assertEndsWith(
|
self.assertEndsWith(
|
||||||
payload0.as_bytes(), b"\n\nFirstname S=FCrname is a great guy."
|
payload0.as_bytes(), b"\n\nFirstname S=FCrname is a great guy.\n"
|
||||||
)
|
)
|
||||||
# Check the text/html alternative.
|
# Check the text/html alternative.
|
||||||
payload1 = message.get_payload(1)
|
payload1 = message.get_payload(1)
|
||||||
@ -723,13 +723,13 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
)
|
)
|
||||||
self.assertEndsWith(
|
self.assertEndsWith(
|
||||||
payload1.as_bytes(),
|
payload1.as_bytes(),
|
||||||
b"\n\n<p>Firstname S=FCrname is a <strong>great</strong> guy.</p>",
|
b"\n\n<p>Firstname S=FCrname is a <strong>great</strong> guy.</p>\n",
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_attachments(self):
|
def test_attachments(self):
|
||||||
msg = EmailMessage()
|
msg = EmailMessage()
|
||||||
file_name = "example.txt"
|
file_name = "example.txt"
|
||||||
file_content = "Text file content"
|
file_content = "Text file content\n"
|
||||||
mime_type = "text/plain"
|
mime_type = "text/plain"
|
||||||
msg.attach(file_name, file_content, mime_type)
|
msg.attach(file_name, file_content, mime_type)
|
||||||
|
|
||||||
@ -747,7 +747,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
|
|
||||||
def test_attachments_constructor(self):
|
def test_attachments_constructor(self):
|
||||||
file_name = "example.txt"
|
file_name = "example.txt"
|
||||||
file_content = "Text file content"
|
file_content = "Text file content\n"
|
||||||
mime_type = "text/plain"
|
mime_type = "text/plain"
|
||||||
msg = EmailMessage(
|
msg = EmailMessage(
|
||||||
attachments=[EmailAttachment(file_name, file_content, mime_type)]
|
attachments=[EmailAttachment(file_name, file_content, mime_type)]
|
||||||
@ -769,7 +769,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
|
|
||||||
def test_attachments_constructor_from_tuple(self):
|
def test_attachments_constructor_from_tuple(self):
|
||||||
file_name = "example.txt"
|
file_name = "example.txt"
|
||||||
file_content = "Text file content"
|
file_content = "Text file content\n"
|
||||||
mime_type = "text/plain"
|
mime_type = "text/plain"
|
||||||
msg = EmailMessage(attachments=[(file_name, file_content, mime_type)])
|
msg = EmailMessage(attachments=[(file_name, file_content, mime_type)])
|
||||||
|
|
||||||
@ -884,10 +884,10 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
|
|
||||||
def test_attach_text_as_bytes(self):
|
def test_attach_text_as_bytes(self):
|
||||||
msg = EmailMessage()
|
msg = EmailMessage()
|
||||||
msg.attach("file.txt", b"file content")
|
msg.attach("file.txt", b"file content\n")
|
||||||
filename, content, mimetype = self.get_decoded_attachments(msg)[0]
|
filename, content, mimetype = self.get_decoded_attachments(msg)[0]
|
||||||
self.assertEqual(filename, "file.txt")
|
self.assertEqual(filename, "file.txt")
|
||||||
self.assertEqual(content, "file content") # (decoded)
|
self.assertEqual(content, "file content\n")
|
||||||
self.assertEqual(mimetype, "text/plain")
|
self.assertEqual(mimetype, "text/plain")
|
||||||
|
|
||||||
def test_attach_utf8_text_as_bytes(self):
|
def test_attach_utf8_text_as_bytes(self):
|
||||||
@ -896,10 +896,10 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
in a form that can be decoded at the receiving end.
|
in a form that can be decoded at the receiving end.
|
||||||
"""
|
"""
|
||||||
msg = EmailMessage()
|
msg = EmailMessage()
|
||||||
msg.attach("file.txt", b"\xc3\xa4") # UTF-8 encoded a umlaut.
|
msg.attach("file.txt", b"\xc3\xa4\n") # UTF-8 encoded a-umlaut.
|
||||||
filename, content, mimetype = self.get_decoded_attachments(msg)[0]
|
filename, content, mimetype = self.get_decoded_attachments(msg)[0]
|
||||||
self.assertEqual(filename, "file.txt")
|
self.assertEqual(filename, "file.txt")
|
||||||
self.assertEqual(content, "ä") # (decoded)
|
self.assertEqual(content, "ä\n") # (decoded)
|
||||||
self.assertEqual(mimetype, "text/plain")
|
self.assertEqual(mimetype, "text/plain")
|
||||||
|
|
||||||
def test_attach_non_utf8_text_as_bytes(self):
|
def test_attach_non_utf8_text_as_bytes(self):
|
||||||
@ -1208,7 +1208,7 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
|
|
||||||
def test_custom_utf8_encoding(self):
|
def test_custom_utf8_encoding(self):
|
||||||
"""A UTF-8 charset with a custom body encoding is respected."""
|
"""A UTF-8 charset with a custom body encoding is respected."""
|
||||||
body = "Body with latin characters: àáä."
|
body = "Body with latin characters: àáä.\n"
|
||||||
msg = EmailMessage("Subject", body, "bounce@example.com", ["to@example.com"])
|
msg = EmailMessage("Subject", body, "bounce@example.com", ["to@example.com"])
|
||||||
encoding = charset.Charset("utf-8")
|
encoding = charset.Charset("utf-8")
|
||||||
encoding.body_encoding = charset.QP
|
encoding.body_encoding = charset.QP
|
||||||
@ -1502,12 +1502,12 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
# (If you need to insert/remove/reorder any params here,
|
# (If you need to insert/remove/reorder any params here,
|
||||||
# that indicates a breaking change to documented behavior.)
|
# that indicates a breaking change to documented behavior.)
|
||||||
"subject",
|
"subject",
|
||||||
"body",
|
"body\n",
|
||||||
"from@example.com",
|
"from@example.com",
|
||||||
["to@example.com"],
|
["to@example.com"],
|
||||||
["bcc@example.com"],
|
["bcc@example.com"],
|
||||||
connection,
|
connection,
|
||||||
[EmailAttachment("file.txt", "attachment", "text/plain")],
|
[EmailAttachment("file.txt", "attachment\n", "text/plain")],
|
||||||
{"X-Header": "custom header"},
|
{"X-Header": "custom header"},
|
||||||
["cc@example.com"],
|
["cc@example.com"],
|
||||||
["reply-to@example.com"],
|
["reply-to@example.com"],
|
||||||
@ -1521,10 +1521,10 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
self.assertEqual(message.get_all("X-Header"), ["custom header"])
|
self.assertEqual(message.get_all("X-Header"), ["custom header"])
|
||||||
self.assertEqual(message.get_all("Cc"), ["cc@example.com"])
|
self.assertEqual(message.get_all("Cc"), ["cc@example.com"])
|
||||||
self.assertEqual(message.get_all("Reply-To"), ["reply-to@example.com"])
|
self.assertEqual(message.get_all("Reply-To"), ["reply-to@example.com"])
|
||||||
self.assertEqual(message.get_payload(0).get_payload(), "body")
|
self.assertEqual(message.get_payload(0).get_payload(), "body\n")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.get_decoded_attachments(email),
|
self.get_decoded_attachments(email),
|
||||||
[("file.txt", "attachment", "text/plain")],
|
[("file.txt", "attachment\n", "text/plain")],
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
email.recipients(), ["to@example.com", "cc@example.com", "bcc@example.com"]
|
email.recipients(), ["to@example.com", "cc@example.com", "bcc@example.com"]
|
||||||
@ -1542,25 +1542,25 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
new_connection = mail.get_connection(username="new")
|
new_connection = mail.get_connection(username="new")
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
"original subject",
|
"original subject",
|
||||||
"original body",
|
"original body\n",
|
||||||
"original-from@example.com",
|
"original-from@example.com",
|
||||||
["original-to@example.com"],
|
["original-to@example.com"],
|
||||||
["original-bcc@example.com"],
|
["original-bcc@example.com"],
|
||||||
original_connection,
|
original_connection,
|
||||||
[EmailAttachment("original.txt", "original attachment", "text/plain")],
|
[EmailAttachment("original.txt", "original attachment\n", "text/plain")],
|
||||||
{"X-Header": "original header"},
|
{"X-Header": "original header"},
|
||||||
["original-cc@example.com"],
|
["original-cc@example.com"],
|
||||||
["original-reply-to@example.com"],
|
["original-reply-to@example.com"],
|
||||||
)
|
)
|
||||||
email.subject = "new subject"
|
email.subject = "new subject"
|
||||||
email.body = "new body"
|
email.body = "new body\n"
|
||||||
email.from_email = "new-from@example.com"
|
email.from_email = "new-from@example.com"
|
||||||
email.to = ["new-to@example.com"]
|
email.to = ["new-to@example.com"]
|
||||||
email.bcc = ["new-bcc@example.com"]
|
email.bcc = ["new-bcc@example.com"]
|
||||||
email.connection = new_connection
|
email.connection = new_connection
|
||||||
email.attachments = [
|
email.attachments = [
|
||||||
("new1.txt", "new attachment 1", "text/plain"), # plain tuple.
|
("new1.txt", "new attachment 1\n", "text/plain"), # plain tuple
|
||||||
EmailAttachment("new2.txt", "new attachment 2", "text/csv"),
|
EmailAttachment("new2.txt", "new attachment 2\n", "text/csv"),
|
||||||
MIMEImage(b"GIF89a...", "gif"),
|
MIMEImage(b"GIF89a...", "gif"),
|
||||||
]
|
]
|
||||||
email.extra_headers = {"X-Header": "new header"}
|
email.extra_headers = {"X-Header": "new header"}
|
||||||
@ -1574,12 +1574,12 @@ class MailTests(MailTestsMixin, SimpleTestCase):
|
|||||||
self.assertEqual(message.get_all("X-Header"), ["new header"])
|
self.assertEqual(message.get_all("X-Header"), ["new header"])
|
||||||
self.assertEqual(message.get_all("Cc"), ["new-cc@example.com"])
|
self.assertEqual(message.get_all("Cc"), ["new-cc@example.com"])
|
||||||
self.assertEqual(message.get_all("Reply-To"), ["new-reply-to@example.com"])
|
self.assertEqual(message.get_all("Reply-To"), ["new-reply-to@example.com"])
|
||||||
self.assertEqual(message.get_payload(0).get_payload(), "new body")
|
self.assertEqual(message.get_payload(0).get_payload(), "new body\n")
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
self.get_decoded_attachments(email),
|
self.get_decoded_attachments(email),
|
||||||
[
|
[
|
||||||
("new1.txt", "new attachment 1", "text/plain"),
|
("new1.txt", "new attachment 1\n", "text/plain"),
|
||||||
("new2.txt", "new attachment 2", "text/csv"),
|
("new2.txt", "new attachment 2\n", "text/csv"),
|
||||||
(None, b"GIF89a...", "image/gif"),
|
(None, b"GIF89a...", "image/gif"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@ -1674,26 +1674,29 @@ class BaseEmailBackendTests(MailTestsMixin):
|
|||||||
|
|
||||||
def test_send(self):
|
def test_send(self):
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
"Subject", "Content", "from@example.com", ["to@example.com"]
|
"Subject", "Content\n", "from@example.com", ["to@example.com"]
|
||||||
)
|
)
|
||||||
num_sent = mail.get_connection().send_messages([email])
|
num_sent = mail.get_connection().send_messages([email])
|
||||||
self.assertEqual(num_sent, 1)
|
self.assertEqual(num_sent, 1)
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
self.assertEqual(message["subject"], "Subject")
|
self.assertEqual(message["subject"], "Subject")
|
||||||
self.assertEqual(message.get_payload(), "Content")
|
self.assertEqual(message.get_payload(), "Content\n")
|
||||||
self.assertEqual(message["from"], "from@example.com")
|
self.assertEqual(message["from"], "from@example.com")
|
||||||
self.assertEqual(message.get_all("to"), ["to@example.com"])
|
self.assertEqual(message.get_all("to"), ["to@example.com"])
|
||||||
|
|
||||||
def test_send_unicode(self):
|
def test_send_unicode(self):
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
"Chère maman", "Je t'aime très fort", "from@example.com", ["to@example.com"]
|
"Chère maman",
|
||||||
|
"Je t'aime très fort\n",
|
||||||
|
"from@example.com",
|
||||||
|
["to@example.com"],
|
||||||
)
|
)
|
||||||
num_sent = mail.get_connection().send_messages([email])
|
num_sent = mail.get_connection().send_messages([email])
|
||||||
self.assertEqual(num_sent, 1)
|
self.assertEqual(num_sent, 1)
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
self.assertEqual(message["subject"], "Chère maman")
|
self.assertEqual(message["subject"], "Chère maman")
|
||||||
self.assertIn(b"Subject: =?utf-8?q?Ch=C3=A8re_maman?=", message.as_bytes())
|
self.assertIn(b"Subject: =?utf-8?q?Ch=C3=A8re_maman?=", message.as_bytes())
|
||||||
self.assertEqual(message.get_content(), "Je t'aime très fort")
|
self.assertEqual(message.get_content(), "Je t'aime très fort\n")
|
||||||
|
|
||||||
def test_send_long_lines(self):
|
def test_send_long_lines(self):
|
||||||
"""
|
"""
|
||||||
@ -1750,23 +1753,23 @@ class BaseEmailBackendTests(MailTestsMixin):
|
|||||||
Test send_mail without the html_message
|
Test send_mail without the html_message
|
||||||
regression test for adding html_message parameter to send_mail()
|
regression test for adding html_message parameter to send_mail()
|
||||||
"""
|
"""
|
||||||
send_mail("Subject", "Content", "sender@example.com", ["nobody@example.com"])
|
send_mail("Subject", "Content\n", "sender@example.com", ["nobody@example.com"])
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
|
|
||||||
self.assertEqual(message.get("subject"), "Subject")
|
self.assertEqual(message.get("subject"), "Subject")
|
||||||
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
||||||
self.assertFalse(message.is_multipart())
|
self.assertFalse(message.is_multipart())
|
||||||
self.assertEqual(message.get_payload(), "Content")
|
self.assertEqual(message.get_content(), "Content\n")
|
||||||
self.assertEqual(message.get_content_type(), "text/plain")
|
self.assertEqual(message.get_content_type(), "text/plain")
|
||||||
|
|
||||||
def test_html_send_mail(self):
|
def test_html_send_mail(self):
|
||||||
"""Test html_message argument to send_mail"""
|
"""Test html_message argument to send_mail"""
|
||||||
send_mail(
|
send_mail(
|
||||||
"Subject",
|
"Subject",
|
||||||
"Content",
|
"Content\n",
|
||||||
"sender@example.com",
|
"sender@example.com",
|
||||||
["nobody@example.com"],
|
["nobody@example.com"],
|
||||||
html_message="HTML Content",
|
html_message="HTML Content\n",
|
||||||
)
|
)
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
|
|
||||||
@ -1774,9 +1777,9 @@ class BaseEmailBackendTests(MailTestsMixin):
|
|||||||
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
||||||
self.assertTrue(message.is_multipart())
|
self.assertTrue(message.is_multipart())
|
||||||
self.assertEqual(len(message.get_payload()), 2)
|
self.assertEqual(len(message.get_payload()), 2)
|
||||||
self.assertEqual(message.get_payload(0).get_payload(), "Content")
|
self.assertEqual(message.get_payload(0).get_content(), "Content\n")
|
||||||
self.assertEqual(message.get_payload(0).get_content_type(), "text/plain")
|
self.assertEqual(message.get_payload(0).get_content_type(), "text/plain")
|
||||||
self.assertEqual(message.get_payload(1).get_payload(), "HTML Content")
|
self.assertEqual(message.get_payload(1).get_content(), "HTML Content\n")
|
||||||
self.assertEqual(message.get_payload(1).get_content_type(), "text/html")
|
self.assertEqual(message.get_payload(1).get_content_type(), "text/html")
|
||||||
|
|
||||||
def test_mail_admins_and_managers(self):
|
def test_mail_admins_and_managers(self):
|
||||||
@ -1807,31 +1810,31 @@ class BaseEmailBackendTests(MailTestsMixin):
|
|||||||
@override_settings(MANAGERS=["nobody@example.com"])
|
@override_settings(MANAGERS=["nobody@example.com"])
|
||||||
def test_html_mail_managers(self):
|
def test_html_mail_managers(self):
|
||||||
"""Test html_message argument to mail_managers"""
|
"""Test html_message argument to mail_managers"""
|
||||||
mail_managers("Subject", "Content", html_message="HTML Content")
|
mail_managers("Subject", "Content\n", html_message="HTML Content\n")
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
|
|
||||||
self.assertEqual(message.get("subject"), "[Django] Subject")
|
self.assertEqual(message.get("subject"), "[Django] Subject")
|
||||||
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
||||||
self.assertTrue(message.is_multipart())
|
self.assertTrue(message.is_multipart())
|
||||||
self.assertEqual(len(message.get_payload()), 2)
|
self.assertEqual(len(message.get_payload()), 2)
|
||||||
self.assertEqual(message.get_payload(0).get_payload(), "Content")
|
self.assertEqual(message.get_payload(0).get_content(), "Content\n")
|
||||||
self.assertEqual(message.get_payload(0).get_content_type(), "text/plain")
|
self.assertEqual(message.get_payload(0).get_content_type(), "text/plain")
|
||||||
self.assertEqual(message.get_payload(1).get_payload(), "HTML Content")
|
self.assertEqual(message.get_payload(1).get_content(), "HTML Content\n")
|
||||||
self.assertEqual(message.get_payload(1).get_content_type(), "text/html")
|
self.assertEqual(message.get_payload(1).get_content_type(), "text/html")
|
||||||
|
|
||||||
@override_settings(ADMINS=["nobody@example.com"])
|
@override_settings(ADMINS=["nobody@example.com"])
|
||||||
def test_html_mail_admins(self):
|
def test_html_mail_admins(self):
|
||||||
"""Test html_message argument to mail_admins"""
|
"""Test html_message argument to mail_admins"""
|
||||||
mail_admins("Subject", "Content", html_message="HTML Content")
|
mail_admins("Subject", "Content\n", html_message="HTML Content\n")
|
||||||
message = self.get_the_message()
|
message = self.get_the_message()
|
||||||
|
|
||||||
self.assertEqual(message.get("subject"), "[Django] Subject")
|
self.assertEqual(message.get("subject"), "[Django] Subject")
|
||||||
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
self.assertEqual(message.get_all("to"), ["nobody@example.com"])
|
||||||
self.assertTrue(message.is_multipart())
|
self.assertTrue(message.is_multipart())
|
||||||
self.assertEqual(len(message.get_payload()), 2)
|
self.assertEqual(len(message.get_payload()), 2)
|
||||||
self.assertEqual(message.get_payload(0).get_payload(), "Content")
|
self.assertEqual(message.get_payload(0).get_content(), "Content\n")
|
||||||
self.assertEqual(message.get_payload(0).get_content_type(), "text/plain")
|
self.assertEqual(message.get_payload(0).get_content_type(), "text/plain")
|
||||||
self.assertEqual(message.get_payload(1).get_payload(), "HTML Content")
|
self.assertEqual(message.get_payload(1).get_content(), "HTML Content\n")
|
||||||
self.assertEqual(message.get_payload(1).get_content_type(), "text/html")
|
self.assertEqual(message.get_payload(1).get_content_type(), "text/html")
|
||||||
|
|
||||||
@override_settings(
|
@override_settings(
|
||||||
@ -2199,7 +2202,8 @@ class SMTPHandler:
|
|||||||
data = envelope.content
|
data = envelope.content
|
||||||
mail_from = envelope.mail_from
|
mail_from = envelope.mail_from
|
||||||
|
|
||||||
message = message_from_bytes(data.rstrip())
|
# Convert SMTP's CRNL to NL, to simplify content checks in shared test cases.
|
||||||
|
message = message_from_bytes(data.replace(b"\r\n", b"\n"))
|
||||||
try:
|
try:
|
||||||
header_from = message["from"].addresses[0].addr_spec
|
header_from = message["from"].addresses[0].addr_spec
|
||||||
except (KeyError, IndexError):
|
except (KeyError, IndexError):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user