【问题标题】:GmailDraft.send() changes the Message ID : how to override this?GmailDraft.send() 更改邮件 ID:如何覆盖它?
【发布时间】:2018-11-29 11:44:24
【问题描述】:

当我发送草稿时,消息 ID 会发生变化,如下面的代码所示。

// make draft
var draft = GmailApp.createDraft("test@gmail.com", "Email Subject", "Email Body");
var draftId = draft.getMessage().getId();

// send draft
var message = draft.send();
var messageId = message.getId();

// this returns 'false'
Logger.log(draftId == messageId);

有没有办法在两种情况下覆盖它(保持相同的消息 ID):

  • 场景 1:如上以编程方式发送电子邮件时?
  • Scanerio 2:通过单击我的 gmail 页面上的“发送”手动发送草稿(使用上述代码生成)时?

重点是能够在另一个函数中找到在我的代码中生成的电子邮件(并立即或稍后手动发送)。我认为 Message ID 会是一个很好的跟踪器;但是如果上面看起来太难了,有没有更好的方法来查找稍后在代码中生成的特定电子邮件?

提前非常感谢!

【问题讨论】:

  • 消息 ID 发生了变化,因为它现在是已发送的消息,而不是草稿。回顾一下底层的 Gmail API 和 MIME 消息的详细信息,您会受益匪浅。
  • 要将发送的消息 ID 与源草稿 ID 相关联,请使用您喜欢的关联容器,例如sent[<some key from the draft>].push(message.getId())(当然在前面代码中将相关键初始化为数组之后)
  • 感谢您的指点!

标签: google-apps-script gmail gmail-api


【解决方案1】:

我找到了一个简单的解决方法:使用线程 ID:var threadId = message.getThread().getId();

给定草稿的线程 ID 和草稿发送后生成的消息的线程 ID 完全相同。所以这就是我一直在寻找的“好跟踪器”。

当然,这并不能直接回答帖子的原始问题,但它允许我做我想做的所有事情(稍后查找在代码中生成的特定电子邮件)。

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2011-07-24
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2014-01-29
    相关资源
    最近更新 更多