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

时间:2014-08-21 09:54:32

标签: javascript google-apps-script google-docs-api google-drive-api gmail-api

以下是示例代码

GmailApp.sendEmail("email@example.com", "mail subject", "mail body");

通话结束后,我可以在我的Gmail帐户中看到已发送的邮件,其中包含147f7e77a4efed11这样的ID我想通过上述代码检索已发送邮件的此ID

sendEmail方法返回GmailApp的实例,这对链接操作很有用,但无法获取已发送电子邮件的ID。

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

例如

var message = GmailApp.search("to:email@example.com", 0, 1)[0].getMessages()[0];

现在我可以获取消息的ID并执行所需的操作。

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

3 个答案:

答案 0 :(得分:2)

在构建服务之后,您可以使用messages.list,然后像在GMail中搜索一样过滤它们,您也可以使用labels来获取已发送的邮件等。

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函数中的参数,它也会使它更具通用性。

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

答案 1 :(得分:1)

你可以直接使用新的gmail api。您将需要手动oauth流来获取令牌,然后使用urlFetch进行呼叫。
https://developers.google.com/gmail/api/v1/reference/users/messages/send
它返回一个带有id的消息资源。也许可以用高级服务做到这一点,但我还没有尝试过。我已经用urlfetch完成了它并且工作正常。

答案 2 :(得分:1)

您可以在电子邮件中设置Message-Id标头吗? (不确定应用程序脚本是否允许或覆盖它。)如果是这样,我会以这种方式生成唯一的ID,您可以使用搜索" rfc822msgid查找它:"。