【发布时间】:2019-02-05 02:19:53
【问题描述】:
我正在尝试使用 python 发送 oauth gmail,但无法创建与 Google API 一致的 MimeMessage。创建示例消息后,我使用 base64 将其编码为字符串。但是,我想出了错误:TypeError: a bytes-like object is required, not 'str'
栈顶行:
return {'raw': base64.urlsafe_b64encode(message_str)}
我尝试使用不同版本的编码(encoders.encode_base64(message)、message.as_string().encode("utf-8") 等)并尝试将 message.as_string() 转换为字节(如错误消息所示)但遇到不同的错误消息来自 Google,称编码不符合他们的要求,即“符合 RFC 2822 并编码为 base64url 字符串的 MIME 电子邮件。”
我的整个功能如下。
def create_message(sender, to, subject, message_text):
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
message_str = message.as_string()
return {'raw': base64.urlsafe_b64encode(message_str)}
我不知道为什么这不起作用。它是从教程中复制粘贴的。我正在运行 python 3.7.2
【问题讨论】:
-
这是相关的 ^ 我在此处添加了一个答案,该答案在上下文中利用了那里的解决方案:stackoverflow.com/a/60426961/3187749
标签: python python-3.x email gmail encode