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:
Russell Keith-Magee 2010-04-01 15:16:26 +00:00
parent 271bcda04a
commit db5be42c12
2 changed files with 13 additions and 1 deletions

View File

@ -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

View File

@ -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)