فیلتر پیام‌ها از صندوق‌پستی Exchange

Aspose.Email for C++ به توسعه‌دهندگان امکان فیلتر کردن پیام‌ها در یک صندوق‌پست Exchange را با استفاده از IEWSClient, MailQuery، و ExchangeQueryBuilder. می‌توانید پیام‌ها را بر اساس تاریخ، فرستنده، دامنه، MessageID، اعلان‌های تحویل و معیارهای دیگر فیلتر کنید.

برای دریافت پیام‌ها از یک پوشه برای پردازش‌های بعدی، IEWSClient. متدهای زیر را دارد:

  • ListMessages() - تمام پیام‌های یک صندوق‌پست را دریافت می‌کند.
  • ListMessages() overload - فقط پیام‌هایی را برمی‌گرداند که شرایط خاصی را برآورده می‌شوند. این متد یک MailQuery که قوانین فیلتر مانند کلیدواژه‌های موضوع، بازه‌های تاریخ، و فیلتر بر اساس آدرس را تعریف می‌کند.

فیلتر کردن پیام‌ها با IEWSClient

کد نمونه زیر نشان می‌دهد چگونه ایمیل‌های خاصی را از سرور Exchange با استفاده از Exchange Web Services (EWS) و Aspose.Email برای C++ جستجو و بازیابی کنید. این نمونه تمام فرآیند اتصال به سرور Exchange (در این مثال Office 365)، ساخت یک کوئری جستجو برای یافتن پیام‌های دارای عبارت "Newsletter" در موضوع که امروز رسیده‌اند، اجرای کوئری بر روی صندوق ورودی، دریافت پیام‌های منطبق و مدیریت صحیح چرخهٔ حیات اتصال همراه با مدیریت خطا را نشان می‌دهد.

  1. متصل شدن به سرور Exchange با استفاده از IEWSClient.
  2. ایجاد یک MailQuery یا ExchangeQueryBuilder و شرایط فیلتر را تعریف کنید.
  3. فراخوانی کنید ListMessages(folderUri, query) برای دریافت نتایج فیلتر شده.

فیلتر کردن پیام‌ها بر اساس معیار

نمونه کد فوق پیام‌ها را بر اساس موضوع ایمیل و تاریخ فیلتر می‌کند. شما می‌توانید دیگر ویژگی‌ها را نیز فیلتر کنید. در زیر چند مثال از تنظیم شرایط با استفاده از MailQuery.

فیلتر بر اساس تاریخ امروز

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل‌هایی که امروز دریافت شده‌اند پیدا شود.

فیلتر بر اساس بازه تاریخی

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل‌هایی که در ۷ روز گذشته دریافت شده‌اند پیدا شود.

فیلتر بر اساس فرستنده خاص

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل‌های ارسال شده توسط یک فرستنده خاص پیدا شود.

فیلتر بر اساس دامنه

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل‌های یک دامنه خاص پیدا شوند.

فیلتر بر اساس گیرنده

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل‌های ارسال شده به یک گیرنده خاص پیدا شوند.

فیلتر بر اساس MessageID

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل خاصی بر اساس MessageId آن پیدا شود.

فیلتر اعلان‌های تحویل ایمیل

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا اعلان‌های تحویل ایمیل (MDN) پیدا شوند.

فیلتر بر اساس اندازه پیام

نمونه کد زیر نشان می‌دهد چگونه می‌توان یک پرس‌وجو ساخت تا ایمیل‌های بزرگتر از یک اندازه خاص پیدا شوند.

ساخت پرس‌وجوهای پیچیده

هنگام استفاده از MailQueryBuilder یا ExchangeQueryBuilder، هر ویژگی‌ای که تنظیم می‌کنید یک شرط فیلتر ایجاد می‌کند. اگر این شرایط در عبارات جداگانه تعریف شوند، با استفاده از منطقی AND ترکیب می‌شوند، به این معنی که همه شرایط باید برای بازگرداندن یک پیام مطابقت داشته باشند.

این امکان به توسعه‌دهندگان اجازه می‌دهد فیلترهای دقیقی مانند زیر بسازند:

  • ایمیل‌های درون یک بازه زمانی
  • ایمیل‌های یک دامنه خاص
  • ایمیل‌های مطابقت با چندین معیار به‌صورت همزمان

ترکیب پرس‌وجوها با AND

استفاده از چندین ویژگی سازنده به صورت پی در پی به طور خودکار عملیاتی AND ایجاد می‌کند.

مثال زیر پیام‌هایی را بازیابی می‌کند که:

  • از یک دامنه خاص می‌آیند
  • دریافت شده قبل از امروز
  • دریافت شده در هفت روز گذشته

ترکیب پرس‌وجوها با OR

برای مطابقت پیام‌هایی که یکی از دو شرط را برآورده می‌کنند، از متد Or() استفاده کنید.

مثال زیر پیام‌هایی را دریافت می‌کند که:

  • دارای "test" در موضوع، یا
  • ارسال شده توسط "noreply@host.com"

فیلتر ایمیل حساس به حروف

شما می‌توانید هنگام پرس‌وجو از یک صندوق‌پست Exchange، فیلتر حساس یا غیرحساس به حروف بزرگ/کوچک اعمال کنید. برای کنترل این رفتار، از پرچم IgnoreCase که در روش‌های فیلتر موجود است استفاده کنید. مقدار true باعث فعال شدن تطبیق غیرحساس به حروف می‌شود.

مثال زیر پیام‌هایی را فیلتر می‌کند که:

  • دارای کلمه "Newsletter" در موضوع (بدون حساسیت به حروف بزرگ و کوچک)
  • امروز دریافت شد

صفحه‌بندی در فیلتر کردن پیام‌ها

هنگام کار با صندوق‌پست‌های بزرگ Exchange، صفحه‌بندی به شما امکان می‌دهد پیام‌ها را در دسته‌های کوچک و قابل مدیریت بازیابی کنید. ListMessagesByPage متد IEWSClient نتایج را صفحه به صفحه بر اساس اندازه صفحه و معیارهای پرس‌وجو مشخص شده برمی‌گرداند.

مثال زیر نشان می‌دهد چگونه:

  1. یک فیلتر بسازید با استفاده از MailQueryBuilder.
  2. نتایج را به صورت صفحه‌ای بازیابی کنید.
  3. از تمام صفحات تا آخرین صفحه حلقه بزنید.
  4. تعداد کل پیام‌های مطابق را شمارش کنید.