使用 AQS 过滤 Exchange 邮箱中的邮件
Contents
[
Hide
]
高级查询语法 (AQS) 是 Exchange 使用的一种查询语法,作为搜索过滤器的替代方案,用于表达搜索条件。AQS 提供了一种更灵活的方式来执行搜索并为项目的所有常用字段返回搜索结果。AQS 还友好易用,易于理解且快速上手。使用 AQS 适用于通过附件和收件人查找邮件。
创建 AQS 搜索查询
您可以通过以下方式使用 AQS 创建搜索查询:
- ExchangeAdvancedSyntaxQueryBuilder,它表示基于高级查询语法(AQS)的搜索表达式构建器。或
- ExchangeAdvancedSyntaxMailQuery,直接基于支持的关键字创建 AQS 字符串。
使用查询构建器
创建搜索查询,使用 ExchangeAdvancedSyntaxQueryBuilder 您需要:
-
创建 … 的实例 IEWSClient 使用 GetEWSClient 方法
-
创建 … 的实例 ExchangeAdvancedSyntaxQueryBuilder 并设置必要的属性以构建查询。
-
调用 ListMessages 或 ListItems 方法并传递 MailQuery 实例,由 … 返回 GetQuery 方法,作为其参数之一。
下面的代码示例展示了如何完成上述步骤:
using (var client = EWSClient.GetEWSClient(...))
{
var advancedBuilder = new ExchangeAdvancedSyntaxQueryBuilder();
advancedBuilder.From.Equals("Jim Martin");
advancedBuilder.Subject.Contains("report");
advancedBuilder.HasAttachment.Equals(true);
var messages = client.ListMessages(client.MailboxInfo.InboxUri, advancedBuilder.GetQuery());
}
直接 AQS 查询
创建搜索查询,使用 ExchangeAdvancedSyntaxMailQuery 您需要:
-
创建 … 的实例 IEWSClient 使用 GetEWSClient 方法
-
创建 … 的实例 ExchangeAdvancedSyntaxMailQuery 并传入 AQS 字符串。请参阅 语法描述.
-
调用 ListMessages 或 ListItems 方法并传递 ExchangeAdvancedSyntaxMailQuery 实例作为其参数之一。
下面的代码示例展示了如何完成上述步骤:
using (var client = EWSClient.GetEWSClient(...))
{
ExchangeAdvancedSyntaxMailQuery query = new ExchangeAdvancedSyntaxMailQuery("subject:(product AND report)");
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query);
}