有没有办法按照接收时间的排序顺序列出使用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"
答案 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'];
});