在 C# 中使用 GMail API 创建过滤器 [重复]

Posted

技术标签:

【中文标题】在 C# 中使用 GMail API 创建过滤器 [重复]【英文标题】:Create filters with GMail API in C# [duplicate] 【发布时间】:2021-11-20 12:11:52 【问题描述】:

我正在尝试使用 Visual Studio 2019 中的 C# 使用 Gmail API 创建一个过滤器,该过滤器检查电子邮件是否有附件,然后向其添加相应的标签。我已经得到了该标签的 ID,这是我的代码:

FilterCriteria criteria = new FilterCriteria
            
                HasAttachment = true
            ;
UsersResource.LabelsResource.GetRequest getLabel =
                gmailService.Users.Labels.Get("myemail@gmail.com", "Label_6");
var gotLabel = getLabel.Execute();
var labelId = gotLabel.Id;

FilterAction action = new FilterAction
                
                    AddLabelIds = labelId
                ;
Filter filter = new Filter
        
            Criteria = criteria,
            Action = action
        ;
UsersResource.SettingsResource.FiltersResource.CreateRequest requestFilter =
            gmailService.Users.Settings.Filters.Create(filter, "myemail@gmail.com");
requestFilter.Execute();

UsersResource.SettingsResource.FiltersResource.ListRequest requestList =
                gmailService.Users.Settings.Filters.List("myemail@gmail.com");
// List filters.
IList<Filter> filters = requestList.Execute().Filter;
Console.WriteLine("Filters:");
       if (filters != null && filters.Count > 0)
         
          foreach (var filterItem in filters)
         
             Console.WriteLine("0", filterItem.Criteria);
         

 else

    Console.WriteLine("No filters found.");

Console.Read();

在那之后,我只是想打印我的过滤器,看看是否有任何变化。这是我在使用“FilterAction”时遇到的错误:

System.NullReferenceException: '对象引用未设置为 对象的实例。'

当然,gmailService 已经创建并且范围都是正确的。 免责声明:我是 C# 新手。 我在这里做错了什么?有任何想法吗?提前致谢!

【问题讨论】:

所以你有例外。你应该找到哪个代码行抛出它。并在该行中找到 null 的内容。 @demo 我知道哪个 Line 抛出了错误,我只是不知道为什么它会为空。一定有一些东西与 gmail API 希望如何格式化某些东西有关,而我做错了。 请指向那条线 在提出问题时,最好包含您拥有的所有信息,包括错误发生在哪一行。目前你的问题是“我在这 30 行代码中的某个地方有问题”,你知道它在哪一行,但我们不知道。 @demo 感谢您的提示!这就是答案! 【参考方案1】:

看来FilterAction.AddLabelId 没有被FilterAction 构造函数自动初始化,所以需要手动进行:

FilterAction action = new FilterAction

    AddLabelIds = new List<string>labelId
;

【讨论】:

以上是关于在 C# 中使用 GMail API 创建过滤器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中为 Gmail API 创建消息

使用 Gmail API 创建过滤器

API 为免费的谷歌应用程序和 gmail 用户创建过滤器

Gmail API 创建和发送电子邮件 .NET C#

如何在没有用户交互的情况下使用 GMail API 创建草稿

在 c# 中使用 gmail API 修改消息标签时权限不足 [403] 错误