Fixed #13259 -- Ensure that multiple calls to message() don't corrupt any extra message headers. Thanks to canburak for the report, and Andi Albrecht for the fix.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12901 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
271bcda04a
commit
db5be42c12
|
@ -143,7 +143,7 @@ class EmailMessage(object):
|
||||||
self.content_subtype, encoding)
|
self.content_subtype, encoding)
|
||||||
msg = self._create_message(msg)
|
msg = self._create_message(msg)
|
||||||
msg['Subject'] = self.subject
|
msg['Subject'] = self.subject
|
||||||
msg['From'] = self.extra_headers.pop('From', self.from_email)
|
msg['From'] = self.extra_headers.get('From', self.from_email)
|
||||||
msg['To'] = ', '.join(self.to)
|
msg['To'] = ', '.join(self.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
|
||||||
|
@ -154,6 +154,8 @@ class EmailMessage(object):
|
||||||
if 'message-id' not in header_names:
|
if 'message-id' not in header_names:
|
||||||
msg['Message-ID'] = make_msgid()
|
msg['Message-ID'] = make_msgid()
|
||||||
for name, value in self.extra_headers.items():
|
for name, value in self.extra_headers.items():
|
||||||
|
if name.lower() == 'from': # From is already handled
|
||||||
|
continue
|
||||||
msg[name] = value
|
msg[name] = value
|
||||||
return msg
|
return msg
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,16 @@ BadHeaderError: Header values can't contain newlines (got u'Subject\nInjection T
|
||||||
>>> message['From']
|
>>> message['From']
|
||||||
'from@example.com'
|
'from@example.com'
|
||||||
|
|
||||||
|
# Regression for #13259 - Make sure that headers are not changed
|
||||||
|
# when calling EmailMessage.message()
|
||||||
|
>>> email = EmailMessage('Subject', 'Content', 'bounce@example.com', ['to@example.com'], headers={'From': 'from@example.com'})
|
||||||
|
>>> message = email.message()
|
||||||
|
>>> message['From']
|
||||||
|
'from@example.com'
|
||||||
|
>>> message = email.message()
|
||||||
|
>>> message['From']
|
||||||
|
'from@example.com'
|
||||||
|
|
||||||
# Regression for #11144 - When a to/from/cc header contains unicode,
|
# Regression for #11144 - When a to/from/cc header contains unicode,
|
||||||
# make sure the email addresses are parsed correctly (especially
|
# make sure the email addresses are parsed correctly (especially
|
||||||
# with regards to commas)
|
# with regards to commas)
|
||||||
|
|
Loading…
Reference in New Issue