我需要使用gmail API客户端从用户的收件箱中读取消息。我想要的是自从上次阅读它们以来只获得新消息。当然,我不想阅读所有消息并检查它们中的哪些是新消息,我想在查询中获取新消息。到目前为止,我能想出的最好的解决方案是给我读过的消息加注星标而不是这样的已加星标的消息:
$gmail->users_messages->listUsersMessages('me',['maxResults' => 10, 'q' => "in:inbox AND -in:starred"]);
我在此解决方案中不喜欢的是,这会以某种方式影响消息,并假设此电子邮件用于以常见方式读取和发送消息(使用Web浏览器)我不确定用户是否无法对消息加注星他自己,所以我的申请认为它是阅读。我需要做一些事情,比如读取所有消息,这些消息在一段时间后收到,或者可能是id大于上次读取消息的id。有办法吗?
答案 0 :(得分:0)
您可以在上次检查新邮件时存储纪元的秒数,然后在下次收到新邮件时使用。
我们假设你在Fri, 27 Apr 2018 12:00:00 GMT
检查了新邮件,然后你会在下一个请求中写下这封邮件:
$gmail->users_messages->listUsersMessages('me',['maxResults' => 10, 'q' => "in:inbox after:1524830400"]);