nylas / nylas/nylas-python

UnicodeEncodeError when sending e-mails with some iso-8859 characters (€ symbol)

Ouverte
#448 1 commentaire 0 réactions 2 personnes assignées Voir sur GitHub

@pengfeiye y travaille déjà.

Depuis le 15/1/2026.

bug
Langage dominant
Python
Étoiles
109
Forks
85
Merge moyen
1 j 21 h
PR mergées (30 j)
1

Description

Describe the bug
On last version (nylas==6.14.0), I'm getting an UnicodeEncodeError when sending an e-mail with a message body payload containing some special characters. The € currency symbol raise the error for example.

To Reproduce
With the following payload and Nylas client usage:

from nylas import Client

message = {
    'subject': 'Test envoi avec accent', 
    'attachments': [], 
    'from': [{'name': 'Maxime L', 'email': 'some-test@address.com'}], 
    'cc': [], 
    'bcc': [], 
    'to': [{'name': '', 'email': 'some-address@example.com'}],
    'reply_to': []
    'body': '<p>À noter que lorem ipsum dolor sit...même éàçéàéà<br /><br />€€€€ ça c\'est de l\'euro</p>\r\n<br />---<br />Me', 
}

client = Client("some-api-key", "some Nylas root URL")
client.messages.send(
     "123456abcdef",  # my grant is valid
     request_body=message
)

The following exception is raised:

ERROR 'latin-1' codec can't encode characters in position 430-433: Body ('€€€€') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.
Traceback (most recent call last):
  File "my_code.py", line 419, in send
    client.messages.send(
  File "~venv_packages/nylas/resources/messages.py", line 196, in send
    json_response, headers = self._http_client._execute(
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  [...]
  File "/usr/local/lib/python3.12/http/client.py", line 1327, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.12/http/client.py", line 1372, in _send_request
    body = _encode(body, 'body')
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/http/client.py", line 166, in _encode
    raise UnicodeEncodeError(
    
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 430-433: Body ('€€€€') is not valid Latin-1. Use body.encode('utf-8') if you want to send it encoded in UTF-8.

(characters position slightly changed as I simplified my payload for anonymization)

Expected behavior
E-mail sent without errors, which is the behaviour on nylas 6.13.0 package and earlier.

SDK Version:
6.14.0.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.