تصفية الرسائل باستخدام AQS من صندوق بريد Exchange
صيغة الاستعلام المتقدمة (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);
}