Filtrera meddelanden med AQS från Exchange‑brevlåda
Avancerad frågesyntax (AQS) är frågesyntaxen som används av Exchange som ett alternativ till sökfilter för att uttrycka sökkriterier. AQS är ett mer flexibelt sätt att utföra sökningar och leverera sökresultat för alla vanligen använda fält på objekten. AQS är också användarvänligt, lätt att förstå och snabbt att behärska. Att använda AQS är lämpligt för att hitta meddelanden efter bilagor och mottagare.
Skapa AQS-sökfrågor
Du kan skapa en sökfråga med AQS genom att:
- ExchangeAdvancedSyntaxQueryBuilder, som representerar byggaren av sökuttrycket baserat på Advanced Query Syntax (AQS). eller
- ExchangeAdvancedSyntaxMailQuery, som skapar en AQS‑sträng direkt baserat på de stödjade nyckelorden.
Använda frågebyggare
För att skapa en sökfråga med ExchangeAdvancedSyntaxQueryBuilder du behöver:
-
skapa en instans av IEWSClient med hjälp av GetEWSClient method
-
skapa en instans av ExchangeAdvancedSyntaxQueryBuilder och sätt nödvändiga egenskaper för att bygga en fråga.
-
call ListMessages eller ListItems metod och skicka MailQuery instans, returnerad av GetQuery metod, som en av dess parametrar.
Kodexemplet nedan visar hur ovanstående steg kan utföras:
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());
}
Direkta AQS‑frågor
För att skapa en sökfråga med ExchangeAdvancedSyntaxMailQuery du behöver:
-
skapa en instans av IEWSClient med hjälp av GetEWSClient method
-
skapa en instans av ExchangeAdvancedSyntaxMailQuery och skicka en AQS‑sträng. Se syntaxbeskrivning.
-
call ListMessages eller ListItems metod och skicka ExchangeAdvancedSyntaxMailQuery instans som en av dess parametrar.
Kodexemplet nedan visar hur ovanstående steg kan utföras:
using (var client = EWSClient.GetEWSClient(...))
{
ExchangeAdvancedSyntaxMailQuery query = new ExchangeAdvancedSyntaxMailQuery("subject:(product AND report)");
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query);
}