Posta Sunucusundan E-postaları Filtrele

Gönderen, Alıcı veya Tarihe Göre Mesajları Filtrele

Bu Pop3Client sınıf, açıklanmıştır POP3 Sunucusuna Bağlan, sağlar ListMessages() metod, bir posta kutusundaki tüm mesajları alır. Sadece belirli bir koşula uyan mesajları almak için aşırı yüklenmiş olanı kullanın ListMessages() metod, alır MailQuery argüman olarak. MailQuery sınıf, tarih, konu, gönderici, alıcı vb. gibi sorgu koşullarını belirtmek için çeşitli özellikler sağlar.  MailQueryBuilder sınıf, arama ifadesi oluşturmak için kullanılır. Önce tüm koşul ve kısıtlamalar ayarlanır, ardından MailQuery tarafından geliştirilen sorgu ile doldurulur MailQueryBuilder. The MailQuery sınıf nesnesi tarafından kullanılır Pop3Client sunucudan filtrelenmiş bilgiyi çıkarmak için. Bu makale, bir posta kutusundan e-posta mesajlarını nasıl filtreleyeceğinizi gösterir. İlk örnek, tarih ve konuya göre mesajların nasıl filtrelendiğini açıklar. Diğer kriterlere göre filtreleme ve daha karmaşık sorgular oluşturma yollarını da gösteriyoruz. Tarih ve Saat filtresinin posta kutusundan belirli e-postaları getirmek için uygulanmasını da gösterir. Ayrıca, büyük/küçük harfe duyarlı filtrelemenin nasıl uygulanacağını da gösterir.

Posta Kutusundan Mesajları Filtrele

Bir posta kutusundan mesajları filtrelemek için:

  1. POP3 sunucusuna bağlan.
  2. Bir örnek oluştur MailQuery ve istenen özellikleri ayarlayın.
  3. Şuğu çağırın Pop3Client.ListMessages(MailQuery query) method ve geçirin MailQuery parametrelerde sadece filtrelenmiş mesajları almak için.

Aşağıdaki kod snippet’i, POP3 posta kutusuna bağlanıp, bugün gelen ve konu kısmında "newsletter" kelimesi bulunan mesajları almayı gösterir.

// 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.");

Belirli Kriterlere Göre Mesajları Getir

Yukarıdaki kod örnekleri e-posta konusuna ve tarihe göre mesajları nasıl filtreleyebileceğinizi gösterir. Diğer desteklenen koşulları ayarlamak için başka özellikler de kullanılabilir. Aşağıda koşulları ayarlamanın bazı örnekleri verilmiştir MailQuery.

Aşağıdaki kod snippet’leri, diğer kriterlere göre e-postaları nasıl filtreleyeceğinizi gösterir:

  • Bugün teslim edilen e-postaları bulun.
  • Bir aralıkta alınan e-postaları bulun.
  • Belirli bir göndericiden gelen e-postaları bulun.
  • Belirli bir alandan gönderilen e-postaları bulun.
  • Belirli bir alıcıya gönderilen e-postaları bulun.

Bugünün Tarihi

Aşağıdaki kod snippet’i, bugün teslim edilen e-postaları bulmayı gösterir.

// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.InternalDate.On(DateTime.Now);

Tarih Aralığı

Aşağıdaki kod snippet’i, bir tarih aralığında alınan e-postaları bulmayı gösterir.

// Emails that arrived in last 7 days
builder.InternalDate.Before(DateTime.Now);
builder.InternalDate.Since(DateTime.Now.AddDays(-7));

Belirli Gönderici

Aşağıdaki kod snippet’i, belirli bir göndericiden gelen e-postaları bulmayı gösterir.

// Get emails from specific sender
builder.From.Contains("saqib.razzaq@127.0.0.1");

Belirli Alan

Aşağıdaki kod snippet’i, belirli bir alandan gönderilen e-postaları bulmayı gösterir.

// Get emails from specific domain
builder.From.Contains("SpecificHost.com");

Belirli Alıcı

Aşağıdaki kod snippet’i, belirli bir alıcıya gönderilen e-postaları bulmayı gösterir.

// Get emails sent to specific recipient
builder.To.Contains("recipient");

Karmaşık Sorgular Oluştur

Farklı ise MailQueryBuilder özellikler ayrı ifadelerde ayarlandığında, tüm koşullar eşleşir. Örneğin, bir tarih aralığı ve belirli bir sunucudan gelen mesajları almak istiyorsak üç ifade yazmamız gerekir.

Sorguları AND ile Birleştir

Aşağıdaki kod snippet’i, sorguları AND ile nasıl birleştireceğinizi gösterir.

// 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));

Sorguları OR ile Birleştir

MailQueryBuilder sağlar Or() iki … alan yöntemi MailQuery örnekleri parametre olarak alır. Belirtilen iki koşuldan herhangi birine uyan mesajları alır. Aşağıdaki kod parçacığı, konuda “test” geçen veya gönderen olarak "noreply@host.com" olan mesajları nasıl filtreleyeceğinizi gösterir. Aşağıdaki kod parçacığı, sorguları OR ile nasıl birleştireceğinizi gösterir.

// Specify OR condition
builder.Or(builder.Subject.Contains("test"), builder.From.Contains("noreply@host.com"));

Büyük/Küçük Harfe Duyarlı Filtreler

API, harf duyarlı kritere göre posta kutusundaki e-postaları filtreleme yeteneği de sunar. Aşağıdaki metodlar, harf duyarlı bayrağı belirterek e-posta arama imkanı verir.

  • Metod Aspose.Email.StringComparisonField.Contains(string value, bool ignoreCase)
  • Metod Aspose.Email.StringComparisonField.Equals(string value, bool ignoreCase)
  • Metod Aspose.Email.StringComparisonField.NotContains(string value, bool ignoreCase)
  • Metod 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);