我正在开发一个网络应用程序,我需要检查"最新邮件"我每小时从我的Gmail帐户中的特定发件人收到的邮件。
为实现这一目标,我使用了适用于PHP的Gmail API,并且能够从特定发件人检索邮件,但我需要按日期和时间对此邮件/邮件进行排序,以便我可以从特定发件人处获取最后一封电子邮件。
我查了Advanced Search options of Gmail API 它提供了与日期相关的排序,但它并没有提供任何方法来处理它的时间。
有没有办法得到时间和日期并对其进行排序?或任何其他方法可以帮助我获得最新的"来自特定发件人的邮件?
请帮帮我。在此先感谢。
答案 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
});