فیلتر کردن ایمیل IMAP - روشها، معیارها و مثالهای کد
فیلترکردن پایهای پیام
این ImapClient کلاس فراهم میکند ListMessages() متد تمام پیامهای یک صندوقپست را دریافت میکند. برای دریافت تنها پیامهایی که با شرطی مطابقت دارند، از نسخهٔ بارگذاریشدهٔ ListMessages() متدی که میگیرد MailQuery بهعنوان آرگومان. این MailQuery کلاس ویژگیهای متنوعی برای تعیین شرایط فراهم میکند، برای مثال، تاریخ، موضوع، فرستنده، گیرنده و غیره. مثال اول نشان میدهد چگونه پیامها را بر پایهٔ تاریخ و موضوع فیلتر کنیم. همچنین نشان میدهیم چطور بر اساس معیارهای دیگر فیلتر کنیم و پرسوجوهای پیچیدهتری بسازیم. API همچنین امکان اعمال معیارهای جستجوی حساس به حروف بزرگ/کوچک برای تطبیق دقیق فیلترها را فراهم میکند. API همچنین اجازه مشخص کردن رمزگذاری رشتهٔ جستجو برای فیلتر کردن پیامها از صندوق پست را میدهد.
فیلتر پیامها از صندوق پست
- اتصال و ورود به سرور IMAP
- یک نمونه از MailQuery و ویژگیها را تنظیم کنید
- متد را فراخوانی کنید ImapClient.ListMessages(MailQuery query) متد و پاس دهید MailQuery با پارامترها فقط پیامهای فیلترشده را دریافت کنید.
کد زیر نشان میدهد چگونه به صندوق پست IMAP وصل شویم و پیامهایی که امروز رسیدهاند و کلمه «newsletter» در موضوع دارند، دریافت کنیم.
فیلتر پیامها بر اساس معیار خاص
نمونههای کد فوق پیامها را بر اساس موضوع ایمیل و تاریخ فیلتر میکند. میتوانیم از ویژگیهای دیگر برای تنظیم شرایط پشتیبانیشده دیگر نیز استفاده کنیم. در زیر برخی مثالها برای تنظیم شرایط با استفاده از MailQuery. کدهای زیر نشان میدهند چگونه ایمیلها را فیلتر کنیم بر اساس:
- تاریخ امروز.
- دامنهٔ تاریخ.
- از فرستندهٔ خاص.
- از دامنهٔ خاص.
- از گیرندهٔ خاص.
تاریخ امروز
کد زیر نشان میدهد چگونه ایمیلها را بر پایه تاریخ امروز فیلتر کنیم.
بازه تاریخ
قطعه کد زیر نشان میدهد چگونه ایمیلها را بر اساس بازه تاریخ فیلتر کنید.
فرستنده خاص
کد زیر نشان میدهد چگونه ایمیلها را بر پایه فرستندهٔ خاصی فیلتر کنیم.
دامنه خاص
کد زیر نشان میدهد چگونه ایمیلها را بر پایه دامنهٔ خاصی فیلتر کنیم.
گیرنده خاص
کد زیر نشان میدهد چگونه ایمیلها را بر پایه گیرندهٔ خاصی فیلتر کنیم.
ساخت پرسوجوی پیشرفته
اگر متفاوت MailQueryBuilder ویژگیها در عبارتهای جداگانه تنظیم میشوند، سپس تمام شرایط مطابقت مییابند. برای مثال، اگر بخواهیم پیامها را بین یک بازه زمانی و از یک میزبان خاص دریافت کنیم، باید سه عبارت بنویسیم.
ترکیب پرسوجوها با AND
قطعه کد زیر نشان میدهد چگونه پرسوجوها را با AND ترکیب کنید.
ترکیب پرسوجوها با OR
MailQueryBuilder ارائه میدهد Or() متد که دو MailQuery نمونهها به عنوان پارامترها. پیامهایی را که هر یک از دو شرط مشخصشده را برآورده میکنند، دریافت میکند. کد زیر نشان میدهد چگونه پیامهایی که یا «test» در موضوع دارند یا «noreply@host.com» به عنوان فرستنده، فیلتر شوند. کد زیر نشان میدهد چگونه پرسوجوها را با OR ترکیب کنیم.
فیلتر بر مبنای InternalDate
پیامها میتوانند بر پایه InternalDate از سرور استخراج شوند، اما گاهی سرور تمام پیامها را همانطور که در صندوق ورودی دیده میشوند بر نمیگرداند. دلیل آن میتواند منطقه زمانی سرور باشد چون ممکن است برای همه سرورها مثل جیمیل. Aspose دستورات مانند 008 SEARCH ON 4-May-2014 را بر اساس پروتکل IMAP اما نتیجه ممکن است به دلیل تنظیمات منطقه زمانی سرور متفاوت باشد. یک عضو جدید در ImapMessageInfo به عنوان InternalDate که به فیلتر کردن پیامها کمک بیشتری میکند. کد زیر استفاده از InternalDate برای فیلتر کردن پیامها.
فیلتر حساس به حروف
کد زیر نشان میدهد چگونه از فیلتر ایمیلهای حساس به حروف بزرگ و کوچک استفاده کنیم.
مشخص کردن رمزگذاری برای سازندهٔ پرسوجو
APIهای ImapQueryBuilder سازنده میتواند برای تعیین رمزگذاری رشتهٔ جستجو استفاده شود. این کار همچنین میتواند با استفاده از DefaultEncoding ویژگی MailQueryBuilder. کد زیر نشان میدهد چگونه رمزگذاری را برای سازندهٔ پرسوجو مشخص کنیم.
گزینههای فیلتر سفارشی
فیلتر کردن پیامها با پرچم سفارشی
جستجوی سفارشی برای فیلتر کردن
به عنوان مثال، استاندارد RFC 3501 اجازه جستجوی پیام بر پایه وجود پیوستها را نمیدهد. ولی Gmail ارائه میدهد افزونههای IMAP که امکان انجام چنین جستجویی را میدهد. قطعه کد بعدی نشان میدهد چگونه یک پرسوجوی مربوطه ایجاد شود.
ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");
MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);
فیلتر کردن پیامها با پشتیبانی از صفحهبندی
این ImapClient قابلیت جستجوی پیامها از صندوق پست و فهرستکردن آنها با پشتیبانی از صفحهبندی را فراهم میکند. کد زیر نشان میدهد چگونه پیامها را با پشتیبانی از صفحهبندی فیلتر کنیم.