nylas / nylas/nylas-python

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

オープン
#448 コメント 1 件 リアクション 0 件 担当者 2 名 GitHub で見る

@pengfeiye がすでに取り組んでいます。

2026年1月15日 から。

bug
主要言語
Python
スター
109
フォーク
85
平均マージ
1日 21時間
マージ済み PR(30日)
1

説明

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.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。