收件人名称为多字节字符时,用于发送带有附件的邮件的G邮件API失败

时间:2019-10-30 08:55:24

标签: python gmail gmail-api gsuite

我正在使用下面的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 :(得分:0)

您可以很好地使用Gmail API。唯一必要的步骤是将字符串编码为UTF-8,然后再通过base64以字节发送(由于MIME的定义)。您可以使用类似于以下代码的代码来实现这一点:

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

如果您还有任何疑问,请随时寻求进一步的帮助。