使用 Google API 发送邮件时出错 - “'raw' RFC822 有效负载消息字符串或通过 /upload/* URL 上传消息需要”

kai*_*inC 5 python-3.x google-api-python-client gmail-api

我正在尝试通过 Python 中的 Google API 发送消息,并尝试运行几乎直接从Google 示例页面获取的示例

def CreateMessage(sender, to, subject, message_text):
    message = MIMEText(message_text)
    message['to'] = to
    message['from'] = sender
    message['subject'] = subject
    return {'raw': base64.urlsafe_b64encode(message.as_string().replace('message','resource').encode('ascii'))}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试发送它时

    message = CreateMessage(sender, to, subject, message_text)
    message = service.users().messages().send(body=list(message),userId='me').execute()
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:“'raw' RFC822 有效负载消息字符串或通过 /upload/* URL 上传消息需要”

从其他帖子看来,谷歌似乎在期待一个附件。MIMEText 有什么问题让它期待一个,如果有,我该如何解决?

小智 7

我能够通过删除以下更改来使示例create_message正常工作:

create_message = {
        'raw': encoded_message
    }
Run Code Online (Sandbox Code Playgroud)


Jay*_*Lee 3

list(message)不是必需的,并且为 API 提供了以下内容:

[{"raw": "b64 content..."}]
Run Code Online (Sandbox Code Playgroud)

做就是了:

...messages().send(body=message, userId='me'...
Run Code Online (Sandbox Code Playgroud)