【发布时间】:2020-07-12 07:50:32
【问题描述】:
我正在尝试使用以下代码发送 gmail 消息:
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import base64
def create_message(sender, to, subject, message_text):
"""Create a message for an email.
Args:
sender: Email address of the sender.
to: Email address of the receiver.
subject: The subject of the email message.
message_text: The text of the email message.
Returns:
An object containing a base64url encoded email object.
"""
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
#return {'raw': base64.urlsafe_b64encode(message.as_string())}
b64_bytes = base64.urlsafe_b64encode(message.as_bytes())
b64_string = b64_bytes.decode()
#body = {'raw': b64_string}
return {'raw': b64_string}
s = "email"
t = "email"
sub = "test subject"
m = "message test"
create_message(s,t,sub,m)
其中 s = 我的电子邮件(在此示例中替换为“电子邮件”,t = 我的其他电子邮件(再次替换))
它不会排除任何错误,但不会发送消息。
此代码也不起作用:
#return {'raw': base64.urlsafe_b64encode(message.as_string())}
因为它产生了以下错误:TypeError: a bytes-like object is required, not 'str'
“我解决了这个问题”:
b64_bytes = base64.urlsafe_b64encode(message.as_bytes())
b64_string = b64_bytes.decode()
#body = {'raw': b64_string}
return {'raw': b64_string}
edit(1):我确实有 credentials.json 并通过了 google api 示例
【问题讨论】:
-
您是否检查过 Gmail API 日志以查看是否发生了任何错误?编辑:这可能有助于检查:stackoverflow.com/questions/34377226/…
-
找不到我的令牌并且日志是空的:/
-
@SamMorgan 好像我忘了做 messages.send() 你可能知道它是如何工作的吗?文档让我很困惑。谢谢:)
标签: python-3.x base64 gmail-api