فیلتر ایمیلها از سرور ایمیل
فیلتر پیامها بر اساس فرستنده، گیرنده یا تاریخ
این Pop3Client کلاس، شرح داده شده در اتصال به سرور POP3، ارائه میدهد ListMessages() متد تمام پیامهای یک صندوقپست را دریافت میکند. برای دریافت تنها پیامهایی که با شرطی مطابقت دارند، از نسخهٔ بارگذاریشدهٔ ListMessages() متدی که میگیرد MailQuery بهعنوان آرگومان. این MailQuery کلاس ویژگیهای متنوعی برای تعیین شرایط جستجو فراهم میکند، برای مثال تاریخ، موضوع، فرستنده، گیرنده و غیره. این MailQueryBuilder کلاس برای ساخت عبارت جستجو استفاده میشود. ابتدا همه شرایط و محدودیتها تنظیم میشوند و سپس MailQuery با پرسوجویی که توسط MailQueryBuilder. این MailQuery شیء کلاس توسط Pop3Client برای استخراج اطلاعات فیلتر شده از سرور. این مقاله نشان میدهد چگونه پیامهای ایمیل را از یک صندوق پست فیلتر کنیم. مثال اول نحوه فیلتر پیامها بر اساس تاریخ و موضوع را نمایش میدهد. همچنین نحوه فیلتر بر معیارهای دیگر و ساخت پرسوجوهای پیچیدهتر را نشان میدهد. همچنین کاربرد فیلتر تاریخ و زمان برای بازیابی ایمیلهای خاص از صندوق پست را نشان میدهد. علاوه بر این، نحوه اعمال فیلتر حساس به حروف کوچک و بزرگ را نیز نمایش میدهد.
فیلتر پیامها از صندوق پست
برای فیلتر کردن پیامها از یک صندوقپست:
- اتصال به سرور POP3.
- یک نمونه از MailQuery و ویژگیهای موردنظر را تنظیم کنید.
- متد را فراخوانی کنید Pop3Client.ListMessages(MailQuery query) متد و پاس دهید MailQuery در پارامترها فقط پیامهای فیلترشده را دریافت کنید.
قطعه کد زیر نشان میدهد چگونه به یک صندوقپست POP3 متصل شده و پیامهایی که امروز رسیدهاند و واژه "newsletter" در موضوع دارند را دریافت کنیم.
// Connect and log in to POP3
const string host = "host";
const int port = 110;
const string username = "user@host.com";
const string password = "password";
Pop3Client client = new Pop3Client(host, port, username, password);
// Set conditions, Subject contains "Newsletter", Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.Subject.Contains("Newsletter");
builder.InternalDate.On(DateTime.Now);
// Build the query and Get list of messages
MailQuery query = builder.GetQuery();
Pop3MessageInfoCollection messages = client.ListMessages(query);
Console.WriteLine("Pop3: " + messages.Count + " message(s) found.");
بازیابی پیامها بر اساس معیارهای خاص
نمونههای کد فوق نشان میدهد چگونه میتوانید پیامها را بر اساس موضوع ایمیل و تاریخ فیلتر کنید. میتوانیم از ویژگیهای دیگر برای تنظیم شرایط پشتیبانیشده نیز استفاده کنیم. در ادامه چند مثال از تنظیم شرایط با استفاده از MailQuery.
قطعههای کد زیر نشان میدهند چگونه ایمیلها را بر اساس معیارهای دیگر فیلتر کنیم:
- یافتن ایمیلهای تحویلشده امروز.
- یافتن ایمیلهای دریافتشده در یک بازه.
- یافتن ایمیلهای ارسالشده از یک فرستنده خاص.
- یافتن ایمیلهای ارسالشده از یک دامنه خاص.
- یافتن ایمیلهای ارسالشده به یک گیرنده خاص.
تاریخ امروز
قطعه کد زیر نشان میدهد چگونه ایمیلهای تحویلدادهشده امروز را پیدا کنیم.
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.InternalDate.On(DateTime.Now);
بازه تاریخ
قطعه کد زیر نشان میدهد چگونه ایمیلهای دریافتشده در یک بازه زمانی را پیدا کنیم.
// Emails that arrived in last 7 days
builder.InternalDate.Before(DateTime.Now);
builder.InternalDate.Since(DateTime.Now.AddDays(-7));
فرستنده خاص
قطعه کد زیر نشان میدهد چگونه ایمیلهای ارسالشده از یک فرستنده خاص را پیدا کنیم.
// Get emails from specific sender
builder.From.Contains("saqib.razzaq@127.0.0.1");
دامنه خاص
قطعه کد زیر نشان میدهد چگونه ایمیلهای ارسالشده از یک دامنه خاص را پیدا کنیم.
// Get emails from specific domain
builder.From.Contains("SpecificHost.com");
گیرنده خاص
قطعه کد زیر نشان میدهد چگونه ایمیلهای ارسالشده به یک گیرنده خاص را پیدا کنیم.
// Get emails sent to specific recipient
builder.To.Contains("recipient");
ساخت پرسوجوهای پیچیده
اگر متفاوت MailQueryBuilder ویژگیها در عبارتهای جداگانه تنظیم میشوند، سپس تمام شرایط مطابقت مییابند. برای مثال، اگر بخواهیم پیامها را بین یک بازه زمانی و از یک میزبان خاص دریافت کنیم، باید سه عبارت بنویسیم.
ترکیب پرسوجوها با AND
قطعه کد زیر نشان میدهد چگونه پرسوجوها را با AND ترکیب کنید.
// Emails from specific host, get all emails that arrived before today and all emails that arrived since 7 days ago
builder.From.Contains("SpecificHost.com");
builder.InternalDate.Before(DateTime.Now);
builder.InternalDate.Since(DateTime.Now.AddDays(-7));
ترکیب پرسوجوها با OR
MailQueryBuilder ارائه میدهد Or() متد که دو MailQuery بهعنوان پارامترها. پیامهایی را که با هر یک از دو شرط مشخص شده مطابقت دارند، دریافت میکند. قطعه کد زیر نشان میدهد چگونه پیامهایی را فیلتر کنید که یا در موضوع «test» دارند یا فرستنده آنها "noreply@host.com" است. قطعه کد زیر نشان میدهد چگونه پرسوجوها را با OR ترکیب کنید.
// Specify OR condition
builder.Or(builder.Subject.Contains("test"), builder.From.Contains("noreply@host.com"));
فیلترهای حساس به حروف
API همچنین قابلیت فیلتر کردن ایمیلها از صندوقپست بر اساس معیار حساس به حروف کوچک و بزرگ را فراهم میکند. متدهای زیر امکان جستجوی ایمیلها با پرچم حساس به حروف را ارائه میدهند.
- متد Aspose.Email.StringComparisonField.Contains(string value, bool ignoreCase)
- متد Aspose.Email.StringComparisonField.Equals(string value, bool ignoreCase)
- متد Aspose.Email.StringComparisonField.NotContains(string value, bool ignoreCase)
- متد Aspose.Email.StringComparisonField.NotEquals(string value, bool ignoreCase)
// IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.From.Contains("tesT", true);
MailQuery query1 = builder1.GetQuery();
Pop3MessageInfoCollection messageInfoCol1 = client.ListMessages(query1);