IMAP Sunucusundan E-postaları Getir ve Listele

Mesajları Alma ve Listeleme

Bir Posta Kutusundaki Mesajlar İçin Kimlik Bilgilerini Nasıl Edinirsiniz

E-posta mesajlarını alırken ve işlerken, en yeni Aspose.Email for .NET sürümü tarafından sağlanan aşağıdaki özellikleri kullanarak sıra numaraları ve benzersiz kimlikler gibi ayrıntılı kimlik bilgilerini elde edebilirsiniz:

Aspose.Email.ImapMessageInfo sınıf: bir IMAP posta kutusundaki mesajın kimlik bilgilerini temsil eder.

ImapMessageInfo.SequenceNumber özellik: mesajın sıra numarasını alır.

ImapMessageInfo.UniqueId özellik: mesajın benzersiz tanımlayıcısını alır.

Aspose.Email.MailMessage.ItemId özellik: posta kutusundaki mesaj hakkında ek kimlik bilgilerini temsil eder.

Aşağıdaki kod parçacığı, bir IMAP posta kutusundaki mesajlar için kimlik bilgilerini nasıl elde edeceğinizi gösterir:

  1. Şunun bir örneğini oluştur ImapClient IMAP sunucu hostu, port, e-posta adresi, şifre ve güvenlik seçenekleri gibi gerekli parametreleri sağlayarak sınıf.
  2. Kullan ListMessages "INBOX" klasöründen mesajların bir listesini almak için yöntem. Take(5) yöntemini kullanarak listeyi ilk beş mesaja sınırlayın.
  3. listelenen mesajların sıra numaralarını şunu kullanarak çıkartın: SequenceNumber her mesajın özelliği.
  4. Kullan FetchMessages sunucudan mesajların tam ayrıntılarını, önceki adımda elde edilen sıra numaralarını kullanarak almak için yöntem.
  5. Alınan mesajları döngüyle gezerek her mesaj için aşağıdaki bilgileri alıp gösterin:
  • Mesajın sıra numarası.
  • ItemId.SequenceNumber özelliği.
  • Mesajın konusu.
using (var client = new ImapClient(imapHost, port, emailAddress, password, securityOption))
{
    // List the first 5 messages from the inbox
    var msgs = client.ListMessages("INBOX").Take(5);
    
    // Get sequence numbers of the messages
    var seqIds = msgs.Select(t => t.SequenceNumber);
    
    // Fetch messages based on sequence numbers
    var msgsViaFetch = client.FetchMessages(seqIds);
    
    for (var i = 0; i < 5; i++)
    {
        var thisMsg = msgsViaFetch[i];
        Console.WriteLine($"Message ID: {seqIds.ElementAt(i)} SequenceNumber: {thisMsg.ItemId.SequenceNumber} Subject: {thisMsg.Subject}");
    }
}

Sunucudan MIME Mesaj ID’lerini Listele

ImapMessageInfo MIME’i sağlar MessageId tam mesajı çıkarmadan mesaj tanımlaması için. Aşağıdaki kod parçacığı, MIME messageId’yi nasıl listeleyeceğinizi gösterir.

Sunucudan Mesajları Listele

Aspose.Email, 2 üyeli aşırı yüklenmiş bir varyant sağlar ListMessages() bir sorguya göre belirtilen sayıda mesajı almak için. Aşağıdaki kod parçacığı, mesajları nasıl listeleyeceğinizi gösterir.

Mesajları Özyinelemeli Olarak Listele

IMAP protokolü, bir posta kutusu klasöründen mesajları özyinelemeli olarak listelemeyi destekler. Bu, bir klasörün alt klasörlerinden de mesajları listelemeye yardımcı olur. Aşağıdaki kod parçacığı, mesajları özyinelemeli olarak nasıl listeleyeceğinizi gösterir.

Çoklu Bağlantı ile Mesajları Listele

ImapClient sağlar UseMultiConnection ağır işlemler için birden fazla bağlantı oluşturmak amacıyla kullanılabilen özellik. Çoklu bağlantı modunda kullanılacak bağlantı sayısını şu şekilde ayarlayabilirsiniz: ImapClient.ConnectionsQuantityAşağıdaki kod parçacığı, mesajları listelemek için çoklu bağlantı modunun kullanımını gösterir ve tek bağlantı modu ile performansını karşılaştırır.

Sayfalama Desteğiyle Mesajları Listele

E-posta sunucusunda posta kutusunda çok sayıda mesaj bulunduğunda, genellikle sayfalama desteğiyle mesajları listelemek veya almak istenir. Aspose.Email API’lerinin ImapClient sayfalama desteğiyle sunucudan mesajları almanıza olanak tanır.

Mesaj Eklerini Listele

Ek adı, boyutu gibi bilgileri ek verilerini almadan almak için aşağıdaki API’leri deneyin:

  • Aspose.Email.Clients.Imap.ImapAttachmentInfo - Bir ek bilgisini temsil eder.
  • Aspose.Email.Clients.Imap.ImapAttachmentInfoCollection - Bir koleksiyonunu temsil eder. ImapAttachmentInfo sınıf.
  • Aspose.Email.Clients.Imap.ListAttachments(int sequenceNumber) - Bir mesajdaki her ek hakkında bilgi alır.

Aşağıdaki adımlarla kod örneği, API’leri nasıl kullanacağınızı gösterecek:

  1. Şuğu çağırın ListMessages() imapClient nesnesi üzerindeki yöntem. Bu yöntem, posta kutusundaki mesajlar hakkında bilgi içeren bir ImapMessageInfoCollection döndürür.
  2. messageInfoCollection içindeki her mesajı foreach döngüsüyle yineleyin.
  3. Şuğu çağırın ListAttachments() imapClient nesnesi üzerindeki yöntem, mesaj nesnesinin SequenceNumber özelliğini parametre olarak geçirir. Bu yöntem, mesajdaki ekler hakkında bilgi içeren bir ImapAttachmentInfoCollection döndürür.
  4. attachmentInfoCollection içindeki her eki foreach döngüsüyle yineleyin.
  5. İç döngü içinde, attachmentInfo nesnesinin özelliklerini kullanarak her eki hakkında bilgilere erişebilirsiniz.
var messageInfoCollection = imapClient.ListMessages();
    
foreach (var message in messageInfoCollection)
{
    var attachmentInfoCollection = imapClient.ListAttachments(message.SequenceNumber);

    foreach (var attachmentInfo in attachmentInfoCollection)
    {
        Console.WriteLine("Attachment: {0} (size: {1})", attachmentInfo.Name, attachmentInfo.Size);
    }
}

Mesajları Getirme ve Kaydetme

Sunucudan Mesajları Getir

Bu ImapClient sınıf, bir IMAP sunucusundan mesajları alabilir ve mesajları yerel diske EML formatında kaydedebilir. Mesajları diske kaydetmek için aşağıdaki adımlar gerekir:

  1. Şunun bir örneğini oluştur ImapClient sınıf.
  2. ImapClient içinde bir ana bilgisayar adı, bağlantı noktası, kullanıcı adı ve şifre belirleyin yapıcı.
  3. Klasörü şu şekilde seçin SelectFolder() metod.
  4. Şuğu çağırın ListMessages yöntem, … alır ImapMessageInfoCollection nesne.
  5. İçinde döngü yap ImapMessageInfoCollection koleksiyon, şunu çağırın SaveMessage() metodu ve çıktı yolu ile dosya adını sağlayın.

Aşağıdaki kod parçacığı, bir sunucudan e-posta mesajlarını nasıl alıp kaydedeceğinizi gösterir.

Mesajları Azalan Sırada Getir

Aspose.Email sağlar ImapClient.ListMessagesByPage metot, mesajları sayfalama desteğiyle listeler. Bazı aşırı yüklemeleri ImapClient.ListMessagesByPage kabul eder PageSettings parametre olarak. PageSettings sağlar bir AscendingSorting Bu özellik, false olarak ayarlandığında e-postaları azalan sırada döndürür.

Aşağıdaki örnek kod, kullanımını gösterir AscendingSorting özellik PageSettings sınıf, e-postaların sırasını değiştirmek için.

MSG Formatında Mesajları Kaydedin

E-postaları MSG formatında kaydetmek için, ImapClient.FetchMessage() metodun çağrılması gerekir. Mesajı şu nesnenin bir örneği olarak döndürür MailMessage sınıf. MailMessage.Save() metot, mesajı MSG formatında kaydetmek için ardından çağrılabilir. Aşağıdaki kod parçacığı, mesajları MSG formatında nasıl kaydedeceğinizi gösterir.

Alınan Mesajları Grupla

ImapClient sağlar FetchMessages metod, Sıra Numaraları ya da Benzersiz ID’nin iterable’ını kabul eder ve bir liste döndürür MailMessage. Aşağıdaki kod snippet’i, şunun kullanımını gösterir: FetchMessages metod, mesajları Sıra Numaraları ve Benzersiz ID ile çekmek için.

Klasörleri Al ve Mesajları Yinelemeli Oku

Bu makalede, çoğu ImapClient özellikler, bir IMAP sunucusundan tüm klasörleri ve alt klasörleri yinelemeli olarak listeleyen bir uygulama oluşturmak için kullanılır. Ayrıca her klasör ve alt klasördeki mesajları yerel diskte MSG formatında kaydeder. Diskte, klasörler ve mesajlar IMAP sunucusundakiyle aynı hiyerarşik yapıda oluşturulur ve kaydedilir. Aşağıdaki kod parçacığı, mesajları ve alt klasör bilgilerini yinelemeli olarak nasıl alacağınızı gösterir.

Özel Mesaj Bilgilerini İşleme

Ek Parametreleri Özet Bilgi Olarak Al

List-Unsubscribe Başlık Bilgilerini Al

List-Unsubscribe başlığı, e-posta listelerinden (örneğin reklamlar, bültenler vb.) çıkmak için URL içerir. List-Unsubscribe başlığını almak için, kullanın ListUnsubscribe özellik ImapMessageInfo sınıf. Aşağıdaki örnek, kullanımını gösterir ListUnsubscribe List-Unsubscribe başlığını almayı sağlayan özellik.