根据GmailAPI中的推送通知指南。GmailAPI可以在Gmail邮箱更改时通知您的后端服务器应用程序。
为此,您需要设置Cloud Pub/Sub客户端并创建一个主题。之后,您可以配置您的Gmail帐户以发送邮箱更新通知。指南说
要将Gmail帐户配置为向您的Cloud Pub/Sub主题发送通知,只需使用您的GmailAPI客户端在Gmail用户邮箱上调用watch(),类似于任何其他GmailAPI调用。为此,请提供上面创建的主题名称以及watch()请求中的任何其他选项,例如要过滤的标签。”这句话摘自“获取Gmail邮箱更新”
上面链接的指南中的部分。该指南还提供了一个发出watch()请求的示例。
我的问题是我需要按发件人过滤,而不是标签。我正在创建一个将要部署到托管服务提供商的机器人,可能GCP。
我基本上是在寻找一种方法来让GmailAPI在我收到某个发件人的电子邮件时通知机器人。我在文档中查看了观察方法,似乎唯一可能的过滤器是标签。
那么,每当我收到某个发件人的电子邮件时,是否有其他方法可以通过GmailAPI获得通知?
更新:哦,好的,所以我正在阅读关于通过Pub/SubAPI向主题发布消息的内容,根据GmailAPI文档中对watch的描述,watch似乎负责让Gmail向主题发送(或发布)通知。Pub/SubAPI文档的订阅者概述部分说
要接收发布到主题的消息,您必须创建对该主题的订阅。订阅将主题连接到接收和处理发布到主题的消息的订阅者应用程序。”
所以订阅者应用程序将是机器人。根据Pub/SubAPI文档的过滤消息部分,您可以使用过滤器创建订阅。它说
"当您从带有过滤器的订阅接收消息时,您只会接收与过滤器匹配的消息。Pub/Sub服务会自动确认与过滤器不匹配的消息。您可以按其属性过滤消息。"
那么,Gmail发送(或发布)到主题的消息(或通知)是否包含“发件人”属性?我似乎找不到Gmail在通知消息中包含的属性…
请参阅此处的示例通知结构:https://developers.google.com/gmail/api/guides/push.如规范中所述,只要填充了数据,就允许属性为空,这适用于GmailAPI通知。
所以你问题的答案——如果你找不到“发件人”属性——这是因为消息不包含任何。