【问题标题】:Gmail API: How to move a draft into INBOX, like we can do in Gmail UIGmail API:如何将草稿移至收件箱,就像我们在 Gmail UI 中所做的那样
【发布时间】:2021-10-15 10:25:54
【问题描述】:

Gmail API docs 声明

消息和线程可以有多个与之关联的标签;但是,草稿邮件不能应用标签。

不过,我们可以使用 Gmail 网络用户界面将草稿移至收件箱。

我想使用 API 做同样的事情。如何做到这一点?

【问题讨论】:

  • 如果我没记错的话,收件箱是一个标签,一个特殊的默认标签。 Gmail API 无法向草稿添加标签。但是,您可以添加一个功能请求以使它们无论如何都允许它工作:issuetracker.google.com/issues/…
  • 感谢您的评论。我想知道为什么可以在 Web UI 上完成的事情不能通过 API 完成......
  • 他们没有考虑到每一个功能,所以这就是他们有这种形式的原因。 :)
  • 您如何通过 UI 将草稿移至收件箱?

标签: gmail gmail-api


【解决方案1】:

感谢@DalmTo,我找到了如下解决方案。

message = email.mime.text.MIMEText("This is the body")
message['to'] = "to@example.com"
message['from'] = "to@subject.com"
message['subject'] = "Test draft"
payload1 = {"message": {
    "raw": base64.urlsafe_b64encode(message.as_bytes()).decode("utf-8"),
    # "labelIds": ["INBOX"]  # This will cause an error
    }}
res1 = google.post("/gmail/v1/users/me/drafts", json=payload1)
    
payload2 = {"addLabelIds": ["INBOX"], "removeLabelIds":[]}
thread_id = res1.json()["message"]["threadId"]
res2 = google.post(f"/gmail/v1/users/me/threads/{thread_id}/modify", json=payload2)
# Or (both works)
# message_id = res1.json()["message"]["id"]
# res2 = google.post(f"/gmail/v1/users/me/messages/{thread_id}/modify", json=payload2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2014-12-19
    • 2018-02-26
    • 2014-08-17
    • 2018-02-20
    • 2017-07-15
    • 1970-01-01
    相关资源
    最近更新 更多