如何在浏览器中打开使用 Gmail API 创建的草稿?

Posted

技术标签:

【中文标题】如何在浏览器中打开使用 Gmail API 创建的草稿?【英文标题】:How to open a draft created with Gmail API in browser? 【发布时间】:2021-01-09 08:33:13 【问题描述】:

我正在尝试使用 gmail API 创建一个 gmail 草稿并在新标签页中打开它。

当我尝试使用以下网址打开草稿时:https://mail.google.com/mail/u/0/#drafts/草稿 ID,从外部网络它不会打开草稿。相反,它列出了草稿。 如果我在 Gmail 选项卡中执行相同操作,它会按预期工作。

您可以按照以下步骤重现它

    选择任何草稿并复制其消息ID,您可以使用this 创建一个加入https://mail.google.com/mail/u/0/#drafts/的网址+您在上一步中获得的消息ID。 在 Chrome 中打开一个新标签并将其粘贴,它会将您发送到您的草稿列表。 如果您将相同的网址粘贴到同一选项卡中,它将打开草稿。

有关问题的更多信息

它也不适用于https://mail.google.com/mail/u/0/#drafts/?compose=

当我尝试从另一个选项卡打开草稿时,Chrome 控制台会引发此错误 console error

我注意到如果你打开草稿,url 就像这个 https://mail.google.com/mail/u/0/#drafts?compose=JHrtffLJpZXxNwzKGMhcjvjBrqfPRwKWvkvJbtWpRffXldzxkNQhmkkBWJsHPbdSPdDgBVKpHKZMNtCVFgXrhwMCVjCdCRqTLJhGvqrXNKFZmJDGZ 一样,这个 url 也可以从其他选项卡打开草稿编辑器,但是 compose 值来自哪里?

我知道这不是 API 错误或问题,但如果有人遇到同样的问题并且知道任何解决方法,我会很感激。

所以问题是,我如何创建一个 url 来使用 Gmail API 打开一个 gmail 草稿?

【问题讨论】:

【参考方案1】:

改变这个网址的方式,现在是这样的:

mail.google.com/mail/#inbox?compose=draft.message.id

如果你列出你得到的草稿


  "drafts": [
    
      "id": "r5632827412362757569",
      "message": 
        "id": "174f4fa0dd96af123",
        "threadId": "174f4f59344d6321"
      
    
  ],
  ...

因此,要打开此草稿,您需要以下网址:

mail.google.com/mail/#inbox?compose=174f4fa0dd96af123

【讨论】:

酷!您在哪里找到支持它的文档? 按照您的建议,我在问题跟踪器中创建了一个功能请求,他们用这个解决方案回复了我。 API 文档没有此信息,这意味着此解决方案可能会停止工作,就像之前的解决方案一样... 伙计,你拯救了我的一天!赞一个。【参考方案2】:

你的目标:

能够从邮箱中的草稿中直接打开浏览器选项卡,重点关注您选择的特定草稿。 (如果我错了,请纠正我)。

背景:

    您注意到,当在 UI 中聚焦时,草稿在 url 中可见一个“compose”参数。 drafts resource 不包含“compose”参数,因此我们无法从 API 中获取它,并且它也不等于草稿 id。

结论:

由于所需参数未通过 API 公开提供,因此您目前无法实现目标。您可以通过为 Gmail API 创建“功能请求”直接向 Google 请求该功能。这是链接Issue Tracker。

【讨论】:

以上是关于如何在浏览器中打开使用 Gmail API 创建的草稿?的主要内容,如果未能解决你的问题,请参考以下文章

使用委派的全域权限访问 gmail API

如何防止在 Gmail 的集成迷你浏览器中打开链接

我如何使我的PHP应用程序从不要求提供Gmail API验证码?

如何在没有用户交互的情况下使用 GMail API 创建草稿

如何在 PHP 中跟踪使用 GMAIL API 发送的电子邮件的已发送、已打开、已单击、已退回、已阻止等电子邮件传递状态

通过 Google API 获取 gmail 消息的直接链接