【发布时间】:2018-04-27 20:18:29
【问题描述】:
我需要使用 gmail API 客户端从用户的收件箱中读取消息。而我想要的是只收到自上次阅读以来的新消息。当然,我不想阅读所有消息并检查其中哪些是新消息,我只想在查询中获取新消息。到目前为止,我能想到的最佳解决方案是给我已阅读的消息加星标,而不是像这样得到未加星标的消息:
$gmail->users_messages->listUsersMessages('me',['maxResults' => 10, 'q' => "in:inbox AND -in:starred"]);
我在此解决方案中不喜欢的是,这会以某种方式影响消息,并假设此电子邮件用于以常用方式阅读和发送消息(使用网络浏览器)我不确定用户是否无法为消息加注星标他自己,所以我的应用程序将其视为已读。我需要做一些事情,比如阅读所有消息,这些消息是在一段时间后收到的,或者可能是 id 大于上次阅读消息的 id 的地方。有办法吗?
【问题讨论】:
-
请澄清您的问题。如果您已经阅读了一条消息,那么它如何是新消息?
-
我的意思是我只想查询自上次获取消息以来收到的消息。现在是这样完成的:获取所有未加星标的消息,并在处理后加星标。因此,下次将获取未加星标的消息,并且不会获取已加星标的消息。但我不太喜欢这个解决方案,因为使用也可能手动给消息加注星标。