有没有办法将 Gmail 手表限制为仅添加的邮件?
Posted
技术标签:
【中文标题】有没有办法将 Gmail 手表限制为仅添加的邮件?【英文标题】:Is there any way to limit a Gmail watch to only messages added? 【发布时间】:2017-04-06 20:43:55 【问题描述】:在为用户设置手表时,有没有办法将手表限制为仅显示添加到收件箱的消息?
根据文档 (https://developers.google.com/gmail/api/v1/reference/users/watch),我看到有 INBOX labelId 选项,但我想将其限制为仅添加的消息。我们目前必须通过在随后的 history.list 调用中的字段字符串中传递“history/messagesAdded”来处理这个问题。
【问题讨论】:
【参考方案1】:很遗憾您不能。你要做的是
在通知到达时获取历史记录。历史记录返回一个json
,如果添加了新消息,它包含一个'messagesAdded'
。
您可以保留predefined array of labels
,如下所示
predefinedLabels = ['UNREAD', 'CATEGORY_PERSONAL', 'INBOX']
现在你可以检查了,(each is the history json)
if 'messagesAdded' in each:
labels = each["messagesAdded"][0]["message"]["labelIds"]
intersectionOfTwoArrays = list(set(predefinedLabels) & set(labels))
您可以在此处获得intersection of labels
。现在您必须使用predefined labels
进行检查
if set(predefinedLabels) == set(intersectionOfTwoArrays):
#get the messageId and do what you want
终于可以
filter the notification
随心所欲了!最好存储
histroyId
并在每次更新时更新它notification
并在获得history
时使用它。它会帮助你 仅获取更新的历史记录。
请注意,我在构建服务器时使用了python
。所以上面使用python
写的demo代码
【讨论】:
【参考方案2】:history.list 似乎添加了一个新参数“historyTypes”。如果将其设置为“messageAdded”,则 api 将仅返回该类型的历史记录。
【讨论】:
以上是关于有没有办法将 Gmail 手表限制为仅添加的邮件?的主要内容,如果未能解决你的问题,请参考以下文章
打开包含多个附件的电子邮件,同时将选择器限制为仅电子邮件应用程序?
C++ 中有没有办法将给定类的函数限制为仅另一个类(不使用继承,朋友)?