【发布时间】: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