c# - Gmail API : Watch Inbox label Only

标签 c# gmail-api google-cloud-pubsub

我有下面的代码来查看邮箱。正如所见,在 lableIds 中,我只有一个标签,INBOX,因为我只想听新消息。但是,当我运行它时,它每隔 30 秒左右就会收到具有不同 messageid 的通知。然而收件箱中没有发生任何变化,没有添加/删除新项目。如何将 watch 机身设置为仅监听收件箱中的传入消息?

certificate= new X509Certificate2("file.p12"), "password",     
X509KeyStorageFlags.Exportable);
credential = new ServiceAccountCredential(
                   new ServiceAccountCredential.Initializer(serviceaccount)
                   {
                       User = username,//username being impersonated
                       Scopes = scopes
                   }.FromCertificate(certificate));
var service = new GmailService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = applicationame,
    });


WatchRequest body = new WatchRequest()
{
    TopicName = "projects/projectid/topics/topicname",
    LabelIds = new[] {"INBOX"}
}
string userId = "me";
UsersResource.WatchRequest watchRequest = service.Users.Watch(body, userId);
WatchResponse test = watchRequest.Execute();

最佳答案

Gmail 显然忽略了请求的过滤器数据。这看起来是 gmail 中的一个已知错误。结账https://issuetracker.google.com/issues/37300052监控进展,尽管看起来相当安静。我建议填写错误报告,以便至少重复。

对于我的用例,我只查找带有特定自定义标签的电子邮件。可以存储该用户的历史记录 ID(请参阅 https://developers.google.com/gmail/api/v1/reference/users/history/list ),并且由于这是一个纪元,因此仅每隔 X 分钟左右调用一次 gmail api。这减少了您调用 Gmail 的次数,但并不完美。

关于c# - Gmail API : Watch Inbox label Only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330396/

相关文章:

c# - 如何通过单个字符的一次或多次出现拆分字符串

node.js - 从 id_token Gmail OAuth 获取电子邮件

google-cloud-platform - 手动触发 GCP 发布子功能

c# - 服务器证书与客户端证书

c# - 在 C# 中删除子文件夹中的 Azure Blob - 不删除子文件夹

C# - 检查 Windows10 上是否安装了 UWP 应用程序

java - Gmail API 的 Java 集成问题

java - Gmail API : Decoding the body of the message (Java/Android)

Firebase 函数不会看到本地运行的 pubsub 模拟器

java - 通过 IAM ServiceAccount 进行跨项目 PubSub 订阅