base64编码未服用MIME邮件

问题描述 投票:0回答:1

我试图发送使用python一个OAuth gmail的,我不能够创建与谷歌的API同意MimeMessages。创建示例消息后,我用的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()以字节(作为错误信息显示),但我遇到了来自谷歌不同的错误信息,称没有按编码“T满足他们的要求,这是‘与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

python python-3.x email gmail encode
1个回答
1
投票

对于任何人谁以后有这个问题,这似乎工作

raw = base64.urlsafe_b64encode(message.as_bytes())
raw = raw.decode()
return {'raw': raw}
© www.soinside.com 2019 - 2024. All rights reserved.