在Gmail API中按日期和时间排序邮件/邮件

时间:2015-04-28 12:43:45

标签: php email sorting gmail gmail-api

我正在开发一个网络应用程序,我需要检查"最新邮件"我每小时从我的Gmail帐户中的特定发件人收到的邮件。

为实现这一目标,我使用了适用于PHP的Gmail API,并且能够从特定发件人检索邮件,但我需要按日期和时间对此邮件/邮件进行排序,以便我可以从特定发件人处获取最后一封电子邮件。

我查了Advanced Search options of Gmail API 它提供了与日期相关的排序,但它并没有提供任何方法来处理它的时间。

有没有办法得到时间和日期并对其进行排序?或任何其他方法可以帮助我获得最新的"来自特定发件人的邮件?

请帮帮我。在此先感谢。

2 个答案:

答案 0 :(得分:0)

您可以只列出消息,询问单个消息并明确说明应该从哪个电子邮件地址。

maxResults = 1
query = from:example@gmail.com

GET https://www.googleapis.com/gmail/v1/users/me/messages?maxResults=1&q=from%3Aexample%40gmail.com&access_token={YOUR_API_KEY}

<强>响应:

{
 "messages": [
  {
   "id": "14e97f7ea9b794a4", // This is the Id of the latest message.
   "threadId": "14e97f7ea9b794a4"
  }
 ],
 "nextPageToken": "03176727664356668776",
 "resultSizeEstimate": 3
}

现在只需要收到消息!如果您对用户收到邮件感兴趣,可以要求internalDate,表示自邮件创建时间以来的毫秒数。

fields = internalDate,payload/body/data

GET https://www.googleapis.com/gmail/v1/users/me/messages/14e97f7ea9b794a4?fields=internalDate%2Cpayload%2Fbody%2Fdata&access_token={YOUR_API_KEY}

<强>响应:

{
 "internalDate": "1437068683000", // This is when the message was created.
 "payload": {
  "body": {
   "data": "VGhlIGFjdHVhbCBtZXNzYWdlIHRleHQgZ29lcyBoZXJl" // This is the mail data.
  }
 }
}

这不是php代码,但你知道比我更好!只需在框架中使用相同的查询和字段,您就会得到相同的结果。

答案 1 :(得分:0)

这个问题太老了,但如果有人正在寻找类似的问题,您可以使用 after: 参数中的 q 按小时询问列出的电子邮件。您唯一需要做的就是在当前时间之前发送多少秒。

示例:

gmail.users.messages.list({
      userId: 'me',
      q: `-in:chats is:unread newer_than:1d after:${tenMinutesBefore.unix()}`
}, (err, res) => {
    if (err) return console.log('The API returned an error: ' + err);
   const messages = res.data.messages; // Messages from an hour ago to now
});