From 8858631498bca33feb2acde71f9cf6ca2884b1bd Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Thu, 10 Nov 2016 14:07:19 +0100 Subject: [PATCH] Fixed #27469 -- Prevented sending email to empty addresses Thanks Jarek Glowacki for the report. --- django/core/mail/message.py | 2 +- tests/mail/tests.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/django/core/mail/message.py b/django/core/mail/message.py index 98f3cfd632..97703cac0f 100644 --- a/django/core/mail/message.py +++ b/django/core/mail/message.py @@ -328,7 +328,7 @@ class EmailMessage(object): Returns a list of all recipients of the email (includes direct addressees as well as Cc and Bcc entries). """ - return self.to + self.cc + self.bcc + return [email for email in (self.to + self.cc + self.bcc) if email] def send(self, fail_silently=False): """Sends the email message.""" diff --git a/tests/mail/tests.py b/tests/mail/tests.py index e053a65d6a..51497d71cd 100644 --- a/tests/mail/tests.py +++ b/tests/mail/tests.py @@ -100,6 +100,22 @@ class MailTests(HeadersCheckMixin, SimpleTestCase): self.assertEqual(message['From'], 'from@example.com') self.assertEqual(message['To'], 'to@example.com, other@example.com') + def test_recipients_with_empty_strings(self): + """ + Empty strings in various recipient arguments are always stripped + off the final recipient list. + """ + email = EmailMessage( + 'Subject', 'Content', 'from@example.com', ['to@example.com', ''], + cc=['cc@example.com', ''], + bcc=['', 'bcc@example.com'], + reply_to=['', None], + ) + self.assertEqual( + email.recipients(), + ['to@example.com', 'cc@example.com', 'bcc@example.com'] + ) + def test_cc(self): """Regression test for #7722""" email = EmailMessage('Subject', 'Content', 'from@example.com', ['to@example.com'], cc=['cc@example.com'])