From 50d50d240719a4abb392b8d758ac606f7a1b9aa0 Mon Sep 17 00:00:00 2001 From: Elise Shanholtz Date: Fri, 10 Jul 2020 09:22:39 -0700 Subject: [PATCH] fix: allow general Email type for to_emails (#921) --- sendgrid/helpers/mail/mail.py | 4 +- test/test_mail_helpers.py | 96 +++++++++++++++++++---------------- 2 files changed, 53 insertions(+), 47 deletions(-) diff --git a/sendgrid/helpers/mail/mail.py b/sendgrid/helpers/mail/mail.py index ce8bb2f0c..db2399310 100644 --- a/sendgrid/helpers/mail/mail.py +++ b/sendgrid/helpers/mail/mail.py @@ -256,9 +256,9 @@ def add_to( email = To(email, None) elif isinstance(email, tuple): email = To(email[0], email[1]) - elif not isinstance(email, To): + elif not isinstance(email, Email): raise ValueError( - 'Please use a tuple, To, or a str for a to_email list.' + 'Please use a To/Cc/Bcc, tuple, or a str for a to_email list.' ) self._set_emails(email, global_substitutions, is_multiple, p) else: diff --git a/test/test_mail_helpers.py b/test/test_mail_helpers.py index dff3de5b2..202d3948b 100644 --- a/test/test_mail_helpers.py +++ b/test/test_mail_helpers.py @@ -14,7 +14,7 @@ ClickTracking, Content, DynamicTemplateData, Email, From, Mail, Personalization, - Subject, Substitution, To, TrackingSettings + Subject, Substitution, To, Cc, Bcc, TrackingSettings ) @@ -310,68 +310,74 @@ def test_error_is_not_raised_on_to_emails_set_to_list_of_tuples(self): ('test+to1@example.com', 'Example To Name 1') ] - try: - Mail( - from_email=From('test+from@example.com', 'Example From Name'), - to_emails=to_emails, - subject=Subject('Sending with SendGrid is Fun'), - plain_text_content=PlainTextContent( - 'and easy to do anywhere, even with Python'), - html_content=HtmlContent( - 'and easy to do anywhere, even with Python')) - except: - self.fail('Mail() raised an error on list of tuples') + Mail( + from_email=From('test+from@example.com', 'Example From Name'), + to_emails=to_emails, + subject=Subject('Sending with SendGrid is Fun'), + plain_text_content=PlainTextContent( + 'and easy to do anywhere, even with Python'), + html_content=HtmlContent( + 'and easy to do anywhere, even with Python')) def test_error_is_not_raised_on_to_emails_set_to_list_of_strs(self): from sendgrid.helpers.mail import (PlainTextContent, HtmlContent) self.maxDiff = None to_emails = ['test+to0@example.com', 'test+to1@example.com'] - try: - Mail( - from_email=From('test+from@example.com', 'Example From Name'), - to_emails=to_emails, - subject=Subject('Sending with SendGrid is Fun'), - plain_text_content=PlainTextContent( - 'and easy to do anywhere, even with Python'), - html_content=HtmlContent( - 'and easy to do anywhere, even with Python')) - except: - self.fail('Mail() raised an error on list of strings') + Mail( + from_email=From('test+from@example.com', 'Example From Name'), + to_emails=to_emails, + subject=Subject('Sending with SendGrid is Fun'), + plain_text_content=PlainTextContent( + 'and easy to do anywhere, even with Python'), + html_content=HtmlContent( + 'and easy to do anywhere, even with Python')) def test_error_is_not_raised_on_to_emails_set_to_a_str(self): from sendgrid.helpers.mail import (PlainTextContent, HtmlContent) self.maxDiff = None to_emails = 'test+to0@example.com' - try: - Mail( - from_email=From('test+from@example.com', 'Example From Name'), - to_emails=to_emails, - subject=Subject('Sending with SendGrid is Fun'), - plain_text_content=PlainTextContent( - 'and easy to do anywhere, even with Python'), - html_content=HtmlContent( - 'and easy to do anywhere, even with Python')) - except: - self.fail('Mail() raised an error on a string') + Mail( + from_email=From('test+from@example.com', 'Example From Name'), + to_emails=to_emails, + subject=Subject('Sending with SendGrid is Fun'), + plain_text_content=PlainTextContent( + 'and easy to do anywhere, even with Python'), + html_content=HtmlContent( + 'and easy to do anywhere, even with Python')) def test_error_is_not_raised_on_to_emails_set_to_a_tuple(self): from sendgrid.helpers.mail import (PlainTextContent, HtmlContent) self.maxDiff = None to_emails = ('test+to0@example.com', 'Example To Name 0') - try: - Mail( - from_email=From('test+from@example.com', 'Example From Name'), - to_emails=to_emails, - subject=Subject('Sending with SendGrid is Fun'), - plain_text_content=PlainTextContent( - 'and easy to do anywhere, even with Python'), - html_content=HtmlContent( - 'and easy to do anywhere, even with Python')) - except: - self.fail('Mail() raised an error on a tuple of strings') + Mail( + from_email=From('test+from@example.com', 'Example From Name'), + to_emails=to_emails, + subject=Subject('Sending with SendGrid is Fun'), + plain_text_content=PlainTextContent( + 'and easy to do anywhere, even with Python'), + html_content=HtmlContent( + 'and easy to do anywhere, even with Python')) + + def test_error_is_not_raised_on_to_emails_includes_bcc_cc(self): + from sendgrid.helpers.mail import (PlainTextContent, HtmlContent) + self.maxDiff = None + to_emails = [ + To('test+to0@example.com', 'Example To Name 0'), + Bcc('test+bcc@example.com', 'Example Bcc Name 1'), + Cc('test+cc@example.com', 'Example Cc Name 2') + ] + + Mail( + from_email=From('test+from@example.com', 'Example From Name'), + to_emails=to_emails, + subject=Subject('Sending with SendGrid is Fun'), + plain_text_content=PlainTextContent( + 'and easy to do anywhere, even with Python'), + html_content=HtmlContent( + 'and easy to do anywhere, even with Python')) def test_dynamic_template_data(self): self.maxDiff = None