Gmail API - 有没有办法按照排序顺序列出邮件w.r.t.收到时间?

时间:2017-03-28 14:18:04

标签: google-api gmail gmail-api

有没有办法按照接收时间的排序顺序列出使用Google Mail API的Gmail邮件?

虽然API以反向时间顺序返回邮件。对于10个邮件等非常小的数据集,我发现存在差异。

邮件列表API的响应:

 {
 "messages": [
  {
   "id": "15afb61b8d220a19",
   "threadId": "15afb61b8d220a19"
  },
  {
   "id": "15afb618f941d73f",
   "threadId": "15afb618f941d73f"
  },
  {
   "id": "15afb6174711c7af",
   "threadId": "15afb6174711c7af"
  },

  ...
  ...
  {
   "id": "159bc283f63d5eb7",
   "threadId": "159bc283f63d5eb7"
  },
  {
   "id": "159bc283dc97cd87",
   "threadId": "159bc283dc97cd87"
  },
  {
   "id": "159bc283d95f097c",
   "threadId": "159bc283d95f097c"
  }
 ],
 "resultSizeEstimate": 9
}

回复中的第一条消息(最近):

Id: 15afb61b8d220a19
Date: "Thu, 23 Mar 2017 19:06:08 +0530" 
internalDate: "1490276168000"

列表中的第二封邮件:

Id: 15afb618f941d73f
Date: "Thu, 23 Mar 2017 19:05:58 +0530"
internalDate: "1490276158000"

... ... 列表中的第二封邮件:

Id: 159bc283dc97cd87 
Date: "Fri, 20 Jan 2017 05:54:30 -0800" 
internalDate: "1484920470000"

列表中的最后一封邮件(应该是最旧的,但不是):

Id: 159bc283d95f097c
Date: "Fri, 20 Jan 2017 05:54:31 -0800"
internalDate: "1484920471000"

2 个答案:

答案 0 :(得分:0)

我猜这是基于此search syntax的预期行为。

  

... messages.list不会在日期ASC或日期DESC中返回。据我所知,它们是随机返回的。

您还可以使用https://github.com/lerna/lerna按电子邮件的日期进行过滤。

答案 1 :(得分:0)

似乎应该提供一个参数,但显然不是。不过,使用usort()对结果进行排序还是很容易的。首先使用internalDate作为关键字,从列表中构建一系列消息(看起来已经完成了)。如果您希望它们按降序排列:

usort($messages, function($a, $b) {
    return $b['internalDate'] <=> $a['internalDate'];
});