Filtrar Mensagens com AQS de Caixa de Correio Exchange
Sintaxe de Consulta Avançada (AQS) é a sintaxe de consulta usada pelo Exchange como alternativa aos filtros de pesquisa para expressar critérios de pesquisa. AQS é uma forma mais flexível de executar buscas e entregar resultados de pesquisa para todos os campos comumente usados nos itens. AQS também é fácil de usar, fácil de entender e rápida de dominar. Usar AQS é adequado para localizar mensagens por anexos e destinatários.
Criando Consultas de Pesquisa AQS
Você pode criar uma consulta de pesquisa com AQS por:
- ExchangeAdvancedSyntaxQueryBuilder, que representa o construtor de expressão de pesquisa baseado na sintaxe avançada de consulta (AQS). ou
- ExchangeAdvancedSyntaxMailQuery, que cria uma string AQS diretamente com base nas palavras‑chave suportadas.
Usando o Construtor de Consultas
Para criar uma consulta de pesquisa com ExchangeAdvancedSyntaxQueryBuilder você precisa:
-
criar uma instância de IEWSClient usando GetEWSClient método
-
criar uma instância de ExchangeAdvancedSyntaxQueryBuilder e defina as propriedades necessárias para construir uma consulta.
-
chamar ListMessages ou ListItems método e passe MailQuery instância, retornada por GetQuery método, como um de seus parâmetros.
O exemplo de código abaixo mostra como as etapas acima podem ser realizadas:
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());
}
Consultas AQS Diretas
Para criar uma consulta de pesquisa com ExchangeAdvancedSyntaxMailQuery você precisa:
-
criar uma instância de IEWSClient usando GetEWSClient método
-
criar uma instância de ExchangeAdvancedSyntaxMailQuery e passe uma string AQS. Veja o descrição da sintaxe.
-
chamar ListMessages ou ListItems método e passe ExchangeAdvancedSyntaxMailQuery instância como um de seus parâmetros.
O exemplo de código abaixo mostra como as etapas acima podem ser realizadas:
using (var client = EWSClient.GetEWSClient(...))
{
ExchangeAdvancedSyntaxMailQuery query = new ExchangeAdvancedSyntaxMailQuery("subject:(product AND report)");
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query);
}