1. Luke Plant
  2. django

Commits

aaug...@bcc190cf-cafb-0310-a4f2-bffc1f526a37  committed 4c722bc

Fixed #17444 -- Made it possible to customize the 'To' header in emails.

  • Participants
  • Parent commits ee34dce
  • Branches default

Comments (0)

Files changed (2)

File django/core/mail/message.py

View file
         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)
 
         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

File tests/regressiontests/mail/tests.py

View file
         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