python-sparkpost icon indicating copy to clipboard operation
python-sparkpost copied to clipboard

Unicode display name causes UnicodeEncodeError in sparkpost.transmissions.send() in Python 2.7

Open wodow opened this issue 6 years ago • 1 comments

Using v1.3.5, calling sparkpost_client.transmissions.send(**message)

with message containing ... 'recipients': [ u'REDACTED Hernández <[email protected]>' ], ...

results in this stacktrace:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe1' in position 9: ordinal not in range(128)
... 
File "sparkpost/transmissions.py", line 253, in send
    payload = self._translate_keys(**kwargs)
  File "sparkpost/transmissions.py", line 76, in _translate_keys
    bcc_copies = self._format_copies(recipients, bcc)
  File "sparkpost/transmissions.py", line 100, in _format_copies
    'header_to': self._format_header_to(recipients[0])
  File "sparkpost/transmissions.py", line 109, in _format_header_to
    email=recipient['address']['email']

Should it accept a unicode string as a param? It did in an earlier version - tested on v1.2.0 so far.

wodow avatar Aug 10 '17 16:08 wodow

The exception is raised at https://github.com/SparkPost/python-sparkpost/blame/master/sparkpost/transmissions.py#L105

The inline string there will be a str in Python 2, so can't interpolate a unicode string.

wodow avatar Aug 10 '17 16:08 wodow