【问题标题】:Create filters with GMail API in C# [duplicate]在 C# 中使用 GMail API 创建过滤器 [重复]
【发布时间】: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 感谢您的提示!这就是答案!

标签: c# .net filter visual-studio-2019 gmail-api


【解决方案1】:

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

FilterAction action = new FilterAction
{
    AddLabelIds = new List<string>{labelId}
};

【讨论】:

    猜你喜欢
    • 2016-12-22
    • 2016-07-22
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多