【问题标题】:How to search Outlook.MailItems where it does not belong to advancedSearch's result如何搜索不属于高级搜索结果的 Outlook.MailItems
【发布时间】:2018-09-24 14:03:50
【问题描述】:

背景:

目前我正在搜索属于高级搜索()查询的结果集的邮件项。

link to the doc

Outlook.Search advancedSearch = Application.AdvancedSearch(scope, filter, true, advancedSearchTag);
Outlook.Results advancedSearchResults = advancedSearch.Results;

foreach (MailItem item in advancedSearchResults)
{
    MessageBox.Show(item.Subject.ToString());
}

问题说明:

我想搜索和循环不满足此 advancedSearch() 方法的“过滤器”的 MailItems。有什么办法吗?

如果没有。有什么解决办法吗? (使用 Find() 或 Restrict()) 我的具体情况是搜索每个 MailItem 的 UserProperty 是否为“ABC”。 (不是值,而是 UserProperty 的名称)

在这里,我正在使用:

string filter = "http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046} LIKE \'%" + propertyName + "%\'";

谢谢。

【问题讨论】:

  • 你需要什么? c#代码还是vb.net代码?
  • @Simo 任何东西都可以,因为我只需要知道我可以找到的技术和语法。

标签: c# .net vb.net outlook add-in


【解决方案1】:

首先,在搜索前加上“NOT”。其次,添加“is null”或“is not null”子句 - 您的搜索查询假定属性存在于每个项目上。如果不是,则结果未定义。

【讨论】:

  • 你的意思是这样的吗? (尚未测试) string filter = String.Format("schemas.microsoft.com//mapi//string/{00020329-0000-0000-C000-000000000046} >= '{0}'", propertyName);
  • 不,“schemas.microsoft.com/mapi/string{0B63E350-9CCC-11D0-BCDB-00805FCCCE04}/YouPropertyName”不为空
  • 正如我在回复您的其他问题时已经提到的,您无法搜索属性名称。仅用于属性值。
  • 我今天测试了它并且我能够搜索。完成后将使用工作代码 sn-p 更新另一个问题。我当前问题中的代码段工作正常。我现在只想否定它。
  • 不,它不起作用,这就是您遇到这些问题的原因。您的搜索查询搜索 GUID = {00020329-0000-0000-C000-000000000046} 且没有包含在 propertyName 变量中的值的名称(没有意义)的命名属性。
猜你喜欢
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多