Fixed #28971 -- Made EmailMessage.message() set Cc from headers dict if it exists.
This commit is contained in:
parent
6334939417
commit
b03d500295
|
@ -255,10 +255,8 @@ class EmailMessage:
|
||||||
msg['Subject'] = self.subject
|
msg['Subject'] = self.subject
|
||||||
msg['From'] = self.extra_headers.get('From', self.from_email)
|
msg['From'] = self.extra_headers.get('From', self.from_email)
|
||||||
msg['To'] = self.extra_headers.get('To', ', '.join(map(str, self.to)))
|
msg['To'] = self.extra_headers.get('To', ', '.join(map(str, self.to)))
|
||||||
if self.cc:
|
self._set_list_header_if_not_empty(msg, 'Cc', self.cc)
|
||||||
msg['Cc'] = ', '.join(str(cc) for cc in self.cc)
|
self._set_list_header_if_not_empty(msg, 'Reply-To', self.reply_to)
|
||||||
if self.reply_to:
|
|
||||||
msg['Reply-To'] = self.extra_headers.get('Reply-To', ', '.join(str(r) for r in self.reply_to))
|
|
||||||
|
|
||||||
# Email header names are case-insensitive (RFC 2045), so we have to
|
# Email header names are case-insensitive (RFC 2045), so we have to
|
||||||
# accommodate that when doing comparisons.
|
# accommodate that when doing comparisons.
|
||||||
|
@ -408,6 +406,18 @@ class EmailMessage:
|
||||||
filename=filename)
|
filename=filename)
|
||||||
return attachment
|
return attachment
|
||||||
|
|
||||||
|
def _set_list_header_if_not_empty(self, msg, header, values):
|
||||||
|
"""
|
||||||
|
Set msg's header, either from self.extra_headers, if present, or from
|
||||||
|
the values argument.
|
||||||
|
"""
|
||||||
|
if values:
|
||||||
|
try:
|
||||||
|
value = self.extra_headers[header]
|
||||||
|
except KeyError:
|
||||||
|
value = ', '.join(str(v) for v in values)
|
||||||
|
msg[header] = value
|
||||||
|
|
||||||
|
|
||||||
class EmailMultiAlternatives(EmailMessage):
|
class EmailMultiAlternatives(EmailMessage):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -132,6 +132,13 @@ class MailTests(HeadersCheckMixin, SimpleTestCase):
|
||||||
['to@example.com', 'other@example.com', 'cc@example.com', 'cc.other@example.com', 'bcc@example.com']
|
['to@example.com', 'other@example.com', 'cc@example.com', 'cc.other@example.com', 'bcc@example.com']
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_cc_headers(self):
|
||||||
|
message = EmailMessage(
|
||||||
|
'Subject', 'Content', 'bounce@example.com', ['to@example.com'],
|
||||||
|
cc=['foo@example.com'], headers={'Cc': 'override@example.com'},
|
||||||
|
).message()
|
||||||
|
self.assertEqual(message['Cc'], 'override@example.com')
|
||||||
|
|
||||||
def test_cc_in_headers_only(self):
|
def test_cc_in_headers_only(self):
|
||||||
message = EmailMessage(
|
message = EmailMessage(
|
||||||
'Subject', 'Content', 'bounce@example.com', ['to@example.com'],
|
'Subject', 'Content', 'bounce@example.com', ['to@example.com'],
|
||||||
|
|
Loading…
Reference in New Issue