From 416bd2c992da5e27d0d69fd65dd7c6c382765acb Mon Sep 17 00:00:00 2001 From: "John P. Kennedy" Date: Sun, 28 Apr 2019 11:11:52 -0400 Subject: [PATCH 1/3] Fix #790 Allow Unicode strings for the name associated with the email. --- sendgrid/helpers/mail/email.py | 2 +- test/test_email.py | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/sendgrid/helpers/mail/email.py b/sendgrid/helpers/mail/email.py index 5f2d541a5..fc1fc2cdc 100644 --- a/sendgrid/helpers/mail/email.py +++ b/sendgrid/helpers/mail/email.py @@ -82,7 +82,7 @@ def name(self, value): :param value: Name associated with this email. :type value: string """ - if not (value is None or isinstance(value, str)): + if not (value is None or isinstance(value, basestring)): raise TypeError('name must be of type string.') # Escape common CSV delimiters as workaround for diff --git a/test/test_email.py b/test/test_email.py index 665d7de52..eb50374aa 100644 --- a/test/test_email.py +++ b/test/test_email.py @@ -18,6 +18,12 @@ def test_add_name(self): self.assertEqual(email.name, name) + def test_add_unicode_name(self): + name = u"SomeName" + email = Email(name=name) + + self.assertEqual(email.name, name) + def test_add_name_email(self): name = "SomeName" address = "test@example.com" @@ -25,6 +31,13 @@ def test_add_name_email(self): self.assertEqual(email.name, name) self.assertEqual(email.email, "test@example.com") + def test_add_unicode_name_email(self): + name = u"SomeName" + address = u"test@example.com" + email = Email(email=address, name=name) + self.assertEqual(email.name, name) + self.assertEqual(email.email, u"test@example.com") + def test_add_rfc_function_finds_name_not_email(self): name = "SomeName" email = Email(name) @@ -60,3 +73,10 @@ def test_add_name_with_comma(self): email.name = name self.assertEqual(email.name, '"' + name + '"') + + def test_add_unicode_name_with_comma(self): + email = Email() + name = u"Name, Some" + email.name = name + + self.assertEqual(email.name, u'"' + name + u'"') From 717287b425f5aadf8f1ef7d6e30cccdab992a0ec Mon Sep 17 00:00:00 2001 From: "John P. Kennedy" Date: Mon, 29 Apr 2019 17:55:46 -0400 Subject: [PATCH 2/3] Define basestring for Python 3.x --- sendgrid/helpers/mail/email.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sendgrid/helpers/mail/email.py b/sendgrid/helpers/mail/email.py index fc1fc2cdc..e77795f48 100644 --- a/sendgrid/helpers/mail/email.py +++ b/sendgrid/helpers/mail/email.py @@ -17,6 +17,12 @@ __html_parser__ = HTMLParser() html_entity_decode = __html_parser__.unescape +try: + basestring = unicode +except NameError: + # Define basestring when Python >= 3.0 + basestring = str + class Email(object): """An email address with an optional name.""" From 0cdcb2c17621507e208545f83eb4cff2727fbd4f Mon Sep 17 00:00:00 2001 From: "John P. Kennedy" Date: Mon, 29 Apr 2019 18:02:05 -0400 Subject: [PATCH 3/3] Fix typo --- sendgrid/helpers/mail/email.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sendgrid/helpers/mail/email.py b/sendgrid/helpers/mail/email.py index e77795f48..3c2cb3bbb 100644 --- a/sendgrid/helpers/mail/email.py +++ b/sendgrid/helpers/mail/email.py @@ -18,7 +18,7 @@ html_entity_decode = __html_parser__.unescape try: - basestring = unicode + basestring = basestring except NameError: # Define basestring when Python >= 3.0 basestring = str