在 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 创建过滤器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章