Gmail API для отправки почты с вложенным файлом не работает, если имя получателя многобайтовое - PullRequest
0 голосов
/ 30 октября 2019

Я использую ниже APi для отправки почты с вложением

https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=multipart

, которая работает нормально, когда имя получателя на английском языке, но если имя получателя содержит многобайтовые (например, японский), я получаю 400(Неверный запрос) в качестве ответа.

Фрагмент кода

def create_raw():

    message['to'] = ','.join([recipients_dict['name']+ 
    <"+recipients_dict['email_address']+">" for recipients_dict in 
    recipients['to']])
    message['from'] = email_address
    message['subject'] = subject
    msg = MIMEText(body)
    message.attach(msg)

Если recipients_dict['name'] - «Английский», API работает должным образом, но для многобайтового символа

получение HTTP 400 (неверный запрос) Ошибка

.

1 Ответ

0 голосов
/ 30 октября 2019

У вас хороший подход к Gmail API. Единственным необходимым шагом является кодирование строки в UTF-8 перед отправкой в ​​байтах более base64 (из-за определения MIME ). Вы можете сделать это, используя код, подобный следующему:

import base64
…
recipients_dict['name'] = base64.b64encode(u'ジョージ'.encode("utf-8"))

Если у вас все еще есть какие-либо вопросы, пожалуйста, не стесняйтесь обращаться за дополнительной помощью.

...