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

Abierto
#448 1 comentario 0 reacciones 2 asignados Ver en GitHub

@pengfeiye ya está trabajando en esto.

Desde el 15/1/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

bug

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.

Lenguaje dominante
Python
Estrellas
109
Forks
85
Merge medio
1 d 21 h
PR fusionados (30 d)
1

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de nylas/nylas-python

Todos los issues de nylas/nylas-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.