我试图发送使用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
对于任何人谁以后有这个问题,这似乎工作
raw = base64.urlsafe_b64encode(message.as_bytes())
raw = raw.decode()
return {'raw': raw}