mirror of
https://github.com/django/django.git
synced 2025-08-13 13:29:18 +00:00
Fixed a regression which would cause multiple To, Cc, and Reply-To headers in the result of EmailMessage.message() if values were supplied for both to/cc/reply_to and the corresponding extra_headers fields. Updated related tests to check the generated message() has exactly one of each expected header using get_all(). Regression in b03d5002955256c4b3ed7cfae5150eb79c0eb97e.
This commit is contained in:
parent
c6d1f98d26
commit
b9098538a9
@ -286,7 +286,8 @@ class EmailMessage:
|
|||||||
# Use cached DNS_NAME for performance
|
# Use cached DNS_NAME for performance
|
||||||
msg["Message-ID"] = make_msgid(domain=DNS_NAME)
|
msg["Message-ID"] = make_msgid(domain=DNS_NAME)
|
||||||
for name, value in self.extra_headers.items():
|
for name, value in self.extra_headers.items():
|
||||||
if name.lower() != "from": # From is already handled
|
# Avoid headers handled above.
|
||||||
|
if name.lower() not in {"from", "to", "cc", "reply-to"}:
|
||||||
msg[name] = value
|
msg[name] = value
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
@ -427,14 +428,13 @@ class EmailMessage:
|
|||||||
def _set_list_header_if_not_empty(self, msg, header, values):
|
def _set_list_header_if_not_empty(self, msg, header, values):
|
||||||
"""
|
"""
|
||||||
Set msg's header, either from self.extra_headers, if present, or from
|
Set msg's header, either from self.extra_headers, if present, or from
|
||||||
the values argument.
|
the values argument if not empty.
|
||||||
"""
|
"""
|
||||||
if values:
|
try:
|
||||||
try:
|
msg[header] = self.extra_headers[header]
|
||||||
value = self.extra_headers[header]
|
except KeyError:
|
||||||
except KeyError:
|
if values:
|
||||||
value = ", ".join(str(v) for v in values)
|
msg[header] = ", ".join(str(v) for v in values)
|
||||||
msg[header] = value
|
|
||||||
|
|
||||||
|
|
||||||
class EmailMultiAlternatives(EmailMessage):
|
class EmailMultiAlternatives(EmailMessage):
|
||||||
|
@ -223,7 +223,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
cc=["foo@example.com"],
|
cc=["foo@example.com"],
|
||||||
headers={"Cc": "override@example.com"},
|
headers={"Cc": "override@example.com"},
|
||||||
).message()
|
).message()
|
||||||
self.assertEqual(message["Cc"], "override@example.com")
|
self.assertEqual(message.get_all("Cc"), ["override@example.com"])
|
||||||
|
|
||||||
def test_cc_in_headers_only(self):
|
def test_cc_in_headers_only(self):
|
||||||
message = EmailMessage(
|
message = EmailMessage(
|
||||||
@ -233,7 +233,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
["to@example.com"],
|
["to@example.com"],
|
||||||
headers={"Cc": "foo@example.com"},
|
headers={"Cc": "foo@example.com"},
|
||||||
).message()
|
).message()
|
||||||
self.assertEqual(message["Cc"], "foo@example.com")
|
self.assertEqual(message.get_all("Cc"), ["foo@example.com"])
|
||||||
|
|
||||||
def test_reply_to(self):
|
def test_reply_to(self):
|
||||||
email = EmailMessage(
|
email = EmailMessage(
|
||||||
@ -379,7 +379,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
headers={"From": "from@example.com"},
|
headers={"From": "from@example.com"},
|
||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["From"], "from@example.com")
|
self.assertEqual(message.get_all("From"), ["from@example.com"])
|
||||||
|
|
||||||
def test_to_header(self):
|
def test_to_header(self):
|
||||||
"""
|
"""
|
||||||
@ -393,7 +393,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
headers={"To": "mailing-list@example.com"},
|
headers={"To": "mailing-list@example.com"},
|
||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["To"], "mailing-list@example.com")
|
self.assertEqual(message.get_all("To"), ["mailing-list@example.com"])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
email.to, ["list-subscriber@example.com", "list-subscriber2@example.com"]
|
email.to, ["list-subscriber@example.com", "list-subscriber2@example.com"]
|
||||||
)
|
)
|
||||||
@ -408,7 +408,8 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
message["To"], "list-subscriber@example.com, list-subscriber2@example.com"
|
message.get_all("To"),
|
||||||
|
["list-subscriber@example.com, list-subscriber2@example.com"],
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
email.to, ["list-subscriber@example.com", "list-subscriber2@example.com"]
|
email.to, ["list-subscriber@example.com", "list-subscriber2@example.com"]
|
||||||
@ -421,7 +422,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
"bounce@example.com",
|
"bounce@example.com",
|
||||||
headers={"To": "to@example.com"},
|
headers={"To": "to@example.com"},
|
||||||
).message()
|
).message()
|
||||||
self.assertEqual(message["To"], "to@example.com")
|
self.assertEqual(message.get_all("To"), ["to@example.com"])
|
||||||
|
|
||||||
def test_reply_to_header(self):
|
def test_reply_to_header(self):
|
||||||
"""
|
"""
|
||||||
@ -436,7 +437,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
headers={"Reply-To": "override@example.com"},
|
headers={"Reply-To": "override@example.com"},
|
||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["Reply-To"], "override@example.com")
|
self.assertEqual(message.get_all("Reply-To"), ["override@example.com"])
|
||||||
|
|
||||||
def test_reply_to_in_headers_only(self):
|
def test_reply_to_in_headers_only(self):
|
||||||
message = EmailMessage(
|
message = EmailMessage(
|
||||||
@ -446,7 +447,7 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
["to@example.com"],
|
["to@example.com"],
|
||||||
headers={"Reply-To": "reply_to@example.com"},
|
headers={"Reply-To": "reply_to@example.com"},
|
||||||
).message()
|
).message()
|
||||||
self.assertEqual(message["Reply-To"], "reply_to@example.com")
|
self.assertEqual(message.get_all("Reply-To"), ["reply_to@example.com"])
|
||||||
|
|
||||||
def test_multiple_message_call(self):
|
def test_multiple_message_call(self):
|
||||||
"""
|
"""
|
||||||
@ -461,9 +462,9 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
|||||||
headers={"From": "from@example.com"},
|
headers={"From": "from@example.com"},
|
||||||
)
|
)
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["From"], "from@example.com")
|
self.assertEqual(message.get_all("From"), ["from@example.com"])
|
||||||
message = email.message()
|
message = email.message()
|
||||||
self.assertEqual(message["From"], "from@example.com")
|
self.assertEqual(message.get_all("From"), ["from@example.com"])
|
||||||
|
|
||||||
def test_unicode_address_header(self):
|
def test_unicode_address_header(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user