过滤 Exchange 邮箱中的邮件

Aspose.Email for C++ 允许开发者使用以下方式过滤 Exchange 邮箱中的消息 IEWSClient, MailQuery,以及 ExchangeQueryBuilder。您可以根据日期、发送者、域、MessageID、投递通知以及许多其他条件过滤消息。

要检索文件夹中的消息以进行进一步处理, IEWSClient. 具有以下方法:

  • ListMessages() - 获取邮箱中的所有消息。
  • ListMessages() 重载 - 仅返回符合特定条件的消息。它接受一个 MailQuery 它定义了诸如主题关键字、日期范围和基于地址的过滤等规则。

使用 IEWSClient 过滤消息

以下代码示例演示了如何使用 C++ 中的 Aspose.Email 通过 Exchange Web Services (EWS) 查询并检索来自 Exchange Server 的特定电子邮件。它展示了完整的过程,包括连接到 Exchange 服务器(此处为 Office 365)、构建搜索查询以查找主题中包含 "Newsletter" 且今天收到的邮件、对收件箱执行查询、检索匹配的邮件,并使用错误处理正确管理连接生命周期。

  1. 使用以下方式连接 Exchange 服务器: IEWSClient.
  2. 创建一个 MailQueryExchangeQueryBuilder 并定义过滤条件。
  3. 调用 ListMessages(folderUri, query) 以获取过滤后的结果。

根据条件过滤消息

上述代码示例根据电子邮件主题和日期过滤消息。您也可以过滤其他属性。以下是使用 MailQuery.

按今天的日期过滤

以下代码示例演示如何构建查询以查找今天收到的电子邮件。

按日期范围过滤

以下代码示例演示如何构建查询以查找最近 7 天内收到的电子邮件。

按特定发件人过滤

以下代码示例演示如何构建查询以查找来自特定发件人的电子邮件。

按域过滤

以下代码示例演示如何构建查询以查找来自特定域的电子邮件。

按收件人过滤

以下代码示例演示如何构建查询以查找发送给特定收件人的电子邮件。

按 MessageID 过滤

以下代码示例演示如何构建查询以通过 MessageId 查找特定电子邮件。

过滤邮件投递通知

以下代码示例演示如何构建查询以查找邮件投递通知 (MDN)。

按邮件大小过滤

以下代码示例演示如何构建查询以查找大于特定大小的电子邮件。

构建复杂查询

使用时 MailQueryBuilderExchangeQueryBuilder,您设置的每个属性都会创建一个过滤条件。如果这些条件在不同语句中定义,它们将通过逻辑 AND(与)组合,这意味着只有当所有条件都匹配时才会返回消息。

这使开发者能够构建精确的过滤器,例如:

  • 在日期范围内的电子邮件
  • 来自特定域的电子邮件
  • 同时匹配多个条件的电子邮件

使用 AND 合并查询

按顺序使用多个构建器属性会自动创建 AND(与)操作。

以下示例检索满足以下条件的消息:

  • 来自特定域
  • 今天之前到达
  • 在过去七天内到达

使用 OR 合并查询

要匹配满足任一条件的消息,请使用 Or() 方法。

以下示例获取满足以下条件的消息:

  • 主题中包含 “test”,
  • 由 “noreply@host.com” 发送

区分大小写的电子邮件过滤

在查询 Exchange 邮箱中的消息时,您可以进行区分大小写或不区分大小写的过滤。要控制此行为,请使用过滤方法中提供的 IgnoreCase 标志。传入 true 可启用不区分大小写的匹配。

下面的示例过滤满足以下条件的消息:

  • 主题中包含单词 "Newsletter"(不区分大小写)
  • 今天到达

消息过滤中的分页

在处理大型 Exchange 邮箱时,分页可让您以更小、更易管理的批次检索消息。该 ListMessagesByPage 方法的 IEWSClient 根据指定的页面大小和查询条件逐页返回结果。

下面的示例演示如何:

  1. 使用 MailQueryBuilder.
  2. 分页检索结果。
  3. 循环遍历所有页面,直至最后一页。
  4. 统计匹配消息的总数。