Commit db5be42c authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #13259 -- Ensure that multiple calls to message() don't corrupt any...

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
parent 271bcda0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -143,7 +143,7 @@ class EmailMessage(object):
                           self.content_subtype, encoding)
        msg = self._create_message(msg)
        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)

        # 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:
            msg['Message-ID'] = make_msgid()
        for name, value in self.extra_headers.items():
            if name.lower() == 'from':  # From is already handled
                continue
            msg[name] = value
        return msg

+10 −0
Original line number Diff line number Diff line
@@ -101,6 +101,16 @@ BadHeaderError: Header values can't contain newlines (got u'Subject\nInjection T
>>> message['From']
'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,
# make sure the email addresses are parsed correctly (especially
# with regards to commas)