IMAP E-posta Filtreleme - Yöntemler, Kriterler ve Kod Örnekleri

Temel Mesaj Filtreleme

Bu ImapClient class, şunları 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önderen, alıcı vb. gibi koşulları belirtmek için çeşitli özellikler sunar. İlk örnek, tarih ve konuya göre mesajların nasıl filtreleneceğini gösterir. Ayrıca diğer kriterlere göre filtreleme ve daha karmaşık sorgular oluşturma yollarını gösteriyoruz. API, tam eşleşme filtreleme kriterleri için büyük/küçük harfe duyarlı arama kriterleri uygulama yeteneği sağlar. API ayrıca, posta kutusundan mesajları filtrelemek için arama dizesi kodlamasını belirtmeye izin verir.

Posta Kutusundan Mesajları Filtrele

  1. Bir IMAP sunucusuna bağlan ve oturum aç
  2. Şunun bir örneğini oluştur MailQuery ve özellikleri ayarla
  3. Şuğu çağırın ImapClient.ListMessages(MailQuery query) method ve geçirin MailQuery sadece filtrelenmiş mesajları alacak parametrelerle.

Aşağıdaki kod parçacığı, bir IMAP posta kutusuna bağlanıp, bugün gelen ve konu satırında "newsletter" kelimesi bulunan mesajları nasıl alacağınızı gösterir.

Belirli Kriterlere Göre Mesajları Filtrele

Yukarıdaki kod örnekleri mesajları e-posta konusu ve tarihine göre filtreler. Diğer özellikleri kullanarak başka desteklenen koşulları da ayarlayabiliriz. Aşağıda, koşulları … kullanarak ayarlamaya dair bazı örnekler bulunmaktadır MailQuery. Aşağıdaki kod parçacıkları, e-postaların şunlara göre nasıl filtreleneceğini gösterir:

  1. Bugünün tarihi.
  2. Bir tarih aralığı.
  3. Belirli bir gönderenden.
  4. Belirli bir alan adından.
  5. Belirli bir alıcıdan.

Bugünün Tarihi

Aşağıdaki kod parçacığı, bugünün tarihine göre e-postaların nasıl filtreleneceğini gösterir.

Tarih Aralığı

Aşağıdaki kod parçacığı, e-postaları tarih aralığına göre nasıl filtreleyeceğinizi gösterir.

Belirli Gönderici

Aşağıdaki kod parçacığı, belirli bir gönderene göre e-postaların nasıl filtreleneceğini gösterir.

Belirli Alan

Aşağıdaki kod parçacığı, belirli bir alan adına göre e-postaların nasıl filtreleneceğini gösterir.

Belirli Alıcı

Aşağıdaki kod parçacığı, belirli bir alıcıya göre e-postaların nasıl filtreleneceğini gösterir.

Gelişmiş Sorgu Oluşturma

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.

Sorguları OR ile Birleştir

MailQueryBuilder sağlar Or() iki … alan yöntemi MailQuery örnekler parametre olarak. Belirtilen iki koşuldan herhangi birine uyan mesajları alır. Aşağıdaki kod parçacığı, konu satırında “test” içeren veya göndereni “noreply@host.com” olan mesajların nasıl filtreleneceğini gösterir. Aşağıdaki kod parçacığı, SORGULARI OR ile nasıl birleştireceğinizi gösterir.

InternalDate’a Göre Filtreleme

Mesajlar, InternalDate temel alınarak sunucudan çıkarılabilir; ancak bazen sunucu, gelen kutusunda görülen tüm mesajları döndürmez. Bunun nedeni, sunucu saat diliminin UTC olmaması gibi durumlar olabilir Gmail. Aspose, 008 SEARCH ON 4-May-2014 gibi komutları gönderir IMAP protokolü ancak sonuç, sunucu saat dilimi ayarlarından dolayı farklı olabilir. Yeni bir üye eklendi ImapMessageInfo as InternalDate bu da mesajları filtrelemede ek yardımcı olur. Aşağıdaki kod parçacığı, kullanımını gösterir InternalDate mesajları filtrelemek için.

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

Aşağıdaki kod parçacığı, büyük/küçük harfe duyarlı e-posta filtrelemenin nasıl kullanılacağını gösterir.

Sorgu Oluşturucu için Kodlamayı Belirle

API’nin ImapQueryBuilder yapıcı, arama dizesi için Kodlamayı belirtmekte kullanılabilir. Bu aynı zamanda aşağıdakini kullanarak da ayarlanabilir DefaultEncoding MailQueryBuilder özelliği. Aşağıdaki kod parçacığı, sorgu oluşturucu için kodlamayı nasıl belirteceğinizi gösterir.

Özel Filtreleme Seçenekleri

Özel Bayrak ile Mesajları Filtrele

Filtreleme için Özel Arama

Örneğin, RFC 3501 standardı mesajlarda ek bulunmasına dayalı bir aramaya izin vermez. Ancak Gmail şunu sağlar IMAP Uzantıları bu tür bir arama yapmaya izin verir. Sonraki kod parçacığı, ilgili sorgunun nasıl oluşturulacağını gösterir.

ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");

MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);

Sayfalama Desteğiyle Mesajları Filtrele

Bu ImapClient posta kutusundan mesajları arama ve sayfalama desteğiyle listeleme yeteneği sağlar. Aşağıdaki kod parçacığı, sayfalama desteğiyle mesajların nasıl filtreleneceğini gösterir.