【发布时间】:2015-10-16 01:02:40
【问题描述】:
我正在尝试通过 Gmail API 自动创建草稿,并且我希望这些草稿成为对现有电子邮件的回复。为此,我相信我需要设置“threadId”标头(特定于 Gmail)、“References”标头和“In-Reply-To”标头。此外,为了让 Gmail 将邮件视为回复,“主题”标头必须与原始电子邮件相匹配。
我将所有这些标头硬编码到一个 MIMEText 对象中,然后将消息作为字符串进行 base-64 编码(urlsafe)并让 Gmail API 传递它。但是,“threadId”、“In-Reply-To”和“References”标题似乎永远不会出现在发送的电子邮件中,因为它们在单击“显示原始”时显示的 MIME 中不存在在 Gmail 用户界面中。
new = MIMEText("reply body text")
new["In-Reply-To"] = "[Message-ID of email to reply to]" #looks like <..@mail.gmail.com>
new["References"] = "[Message-ID of email to reply to]" #looks like <..@mail.gmail.com>
new["threadId"] = "[threadId of message to reply to]" #looks like 14ec476abbce3421
new["Subject"] = "Testsend2"
new["To"] = "[Email to send to]"
new["From"] = "[Email to send from]"
messageToDraft = {'raw': base64.urlsafe_b64encode(new.as_string())}
message = {'message': messageToDraft}
draft = service.users().drafts().create(userId="me", body=message).execute()
【问题讨论】:
-
threadId不应作为raw密钥的一部分发送,它必须分开才能工作。所以message应包含{raw: my_raw, @987654326 @: my_thread_id}