Javascript 如何通过GmailApp检索已发送电子邮件的ID?

Javascript 如何通过GmailApp检索已发送电子邮件的ID?,javascript,google-apps-script,google-docs-api,google-drive-api,gmail-api,Javascript,Google Apps Script,Google Docs Api,Google Drive Api,Gmail Api,下面是一个示例代码 GmailApp.sendEmail("email@example.com", "mail subject", "mail body"); 通话结束后,我可以在我的gmail帐户中看到一条已发送邮件,其ID类似于147f7e77a4efed11。我想通过上述代码检索已发送邮件的ID sendEmail方法返回一个GmailApp实例,该实例用于链接操作,但无法获取已发送电子邮件的ID 我现在做的是执行搜索并获取第一条消息。但我相信这不是一个可靠的方法 范例 var mess

下面是一个示例代码

GmailApp.sendEmail("email@example.com", "mail subject", "mail body");
通话结束后,我可以在我的gmail帐户中看到一条已发送邮件,其ID类似于147f7e77a4efed11。我想通过上述代码检索已发送邮件的ID

sendEmail方法返回一个GmailApp实例,该实例用于链接操作,但无法获取已发送电子邮件的ID

我现在做的是执行搜索并获取第一条消息。但我相信这不是一个可靠的方法

范例

var message = GmailApp.search("to:email@example.com", 0, 1)[0].getMessages()[0];
现在,我可以获得消息的ID并执行所需的操作


是否可以在不进行不可靠搜索的情况下检索邮件或邮件ID?

构建服务后,您可以使用messages.list,然后像在GMail中搜索时一样对其进行过滤,也可以使用仅获取已发送邮件等

messages = gmail_service.users().messages().list(userId='me', q="subject:mail subject deliveredto:email@example.com", maxResults=1).execute()
if messages['messages']:
    for message in messages['messages']:
        print 'message ID: %s' % (message['id'])
如果您在Python函数中传递正在搜索的电子邮件和其他唯一引用作为参数,它也会使Python函数更加通用


编辑:与你交谈后,我认为为每封发送的电子邮件创建自己的个人ID/参考是最谨慎的检索方法。我建议使用,他们有一个javascript版本,我使用faker来满足我所有的数据需求。这里有大量的文档,您可以根据设置ID的方式筛选列表。

您可以直接使用新的gmail api。您将需要一个手动oauth流来获取令牌,然后使用urlFetch进行调用。
它返回一个id为的消息资源。也可以使用高级服务执行此操作,但我尚未尝试。我已经用urlfetch完成了,工作正常。

您能在电子邮件上设置邮件Id标题吗?不确定应用程序脚本是否允许或覆盖它。如果是这样,我会以这种方式生成一个唯一的Id,您可以使用搜索rfc822msgid:。

感谢您的努力,但这种方法也会面临与搜索相同的问题。这种方法的问题在于你不能相信结果。这段代码应该在多用户环境中运行,这种方法很有可能在两个同时调用的同时返回相同的消息,而丢失其中一个。这段代码用于邮件服务,它基于来自多个用户的触发器。因此,在同一帐户/收件箱上调用多个服务会话。添加自定义ID!谢谢你,斯托米,请你在回答中加上同样的内容。这才是真正能解决我问题的方法。我一直在寻找生成的唯一id,现在我意识到我也可以生成相同的id。再次感谢你。非常感谢你的建议以及fakerNo问题的链接,我已经在同一条船上呆了好几次:api似乎只限于有限的选项。看样子很有希望,让我们看看我如何使用它,因为我的代码在谷歌脚本中。可以从应用程序脚本调用,我做到了。请参阅urlfetchApp