From 5e75678c8b7d3cc54aa27b7b682561c5fee64c6c Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Fri, 30 Dec 2011 12:44:35 +0000 Subject: [PATCH] Fixed #17444 -- Made it possible to customize the 'To' header in emails. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17293 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/mail/message.py | 4 ++-- tests/regressiontests/mail/tests.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/django/core/mail/message.py b/django/core/mail/message.py index 3ec29c36a8..39f7afc61b 100644 --- a/django/core/mail/message.py +++ b/django/core/mail/message.py @@ -215,7 +215,7 @@ class EmailMessage(object): msg = self._create_message(msg) msg['Subject'] = self.subject msg['From'] = self.extra_headers.get('From', self.from_email) - msg['To'] = ', '.join(self.to) + msg['To'] = self.extra_headers.get('To', ', '.join(self.to)) if self.cc: msg['Cc'] = ', '.join(self.cc) @@ -227,7 +227,7 @@ 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 + if name.lower() in ('from', 'to'): # From and To are already handled continue msg[name] = value return msg diff --git a/tests/regressiontests/mail/tests.py b/tests/regressiontests/mail/tests.py index ac97f1573a..52e251f3ee 100644 --- a/tests/regressiontests/mail/tests.py +++ b/tests/regressiontests/mail/tests.py @@ -96,6 +96,24 @@ class MailTests(TestCase): message = email.message() self.assertEqual(message['From'], 'from@example.com') + def test_to_header(self): + """ + Make sure we can manually set the To header (#17444) + """ + email = EmailMessage('Subject', 'Content', 'bounce@example.com', + ['list-subscriber@example.com', 'list-subscriber2@example.com'], + headers={'To': 'mailing-list@example.com'}) + message = email.message() + self.assertEqual(message['To'], 'mailing-list@example.com') + self.assertEqual(email.to, ['list-subscriber@example.com', 'list-subscriber2@example.com']) + + # If we don't set the To header manually, it should default to the `to` argument to the constructor + email = EmailMessage('Subject', 'Content', 'bounce@example.com', + ['list-subscriber@example.com', 'list-subscriber2@example.com']) + message = email.message() + self.assertEqual(message['To'], 'list-subscriber@example.com, list-subscriber2@example.com') + self.assertEqual(email.to, ['list-subscriber@example.com', 'list-subscriber2@example.com']) + def test_multiple_message_call(self): """ Regression for #13259 - Make sure that headers are not changed when