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'])