IMAP Sunucusundan E-postaları Getir ve Listele

Posta Kutusundan Mesajları Listele

’list_messages’ yöntemi ImapClient sınıfı, şu anda seçili klasörden (bu durumda "Inbox") tüm mesajların bir listesini getirir. Bu liste, mesaj kimlikleri, sıra numaraları, UID’ler ve muhtemelen konu satırları veya gönderici bilgileri gibi özet verileri içeren mesaj meta veri nesnelerini içerir.

Aşağıdaki kod parçacığı, Gelen Kutusundan mesaj meta verilerini nasıl alacağınızı ve toplam mesaj sayısını nasıl bastıracağınızı gösterir:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.select_folder("Inbox")

messages = client.list_messages()
print(f"Total Messages: {len(messages)}")

Sayfalama Desteğiyle Mesajları Listele

E-posta sunucusunun posta kutusunda çok sayıda mesaj bulunduğu durumlarda, mesajları sayfalama desteğiyle listelemek veya almak genellikle istenir. Aspose.Email ImapClient sınıfı, sayfalama desteğiyle sunucudan mesajları almanıza olanak tanır.

Mesajları Özyinelemeli Olarak Listele

IMAP protokolü, bir posta kutusu klasöründen mesajları özyinelemeli olarak listelemeye olanak tanır. Alt klasörlerdeki mesajların da listelenmesini sağlar. Aşağıdaki kod parçacığı, mesajları recursive olarak nasıl listeleyeceğinizi gösterir:

MIME Mesaj ID’lerini Listele

Bu ImapMessageInfo sınıfı, tüm mesaj içeriğini çıkarmaya gerek kalmadan mesajları tanımlamak için MIME MessageId’ye erişmenin kullanışlı bir yolunu sunar. Aşağıda, MIME MessageId’yi listeleyen bir kod örneği bulunmaktadır:

Çoklu Bağlantı ile Mesajları Listele

Bu ImapClient sınıfı, yoğun yüklerde birden fazla bağlantı kullanılmasını sağlayan use_multi_connection özelliğini sunar. Ayrıca, çoklu bağlantı modunda bağlantı sayısını connections_quantity özelliğiyle belirtebilirsiniz. Aşağıdaki kod parçacığı, mesajları listelemek için çoklu bağlantı modunun nasıl kullanılacağını gösterir:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.select_folder("Inbox")
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE

message_info_col = client.list_messages(True)

Lütfen bu modun kullanılması mutlaka performans artışı sağlamayabileceğini unutmayın.

Mesajları Sıra Numarasına veya Benzersiz ID’ye Göre Al

Aspose.Email API, bir listede sıra numaralarını, diğerinde ise gelen kutusundaki tüm mesajların benzersiz kimliklerini (UID) içeren iki mesaj listesi üretmenize olanak tanır. IMAP sunucusundan mesajları kimliklerine göre almak için, ImapClient sınıf. Aşağıdaki kod parçacığı, mesajları kimliklerine göre nasıl listeleyeceğinizi gösterir:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

# List messages
message_info_col = client.list_messages()
print("ListMessages Count:", message_info_col.count)

# Get sequence numbers and unique IDs
sequence_number_ar = [mi.sequence_number for mi in message_info_col]
unique_id_ar = [mi.unique_id for mi in message_info_col]

# Fetch messages by sequence number
fetched_messages_by_snum = client.fetch_messages(sequence_number_ar)
print("FetchMessages-sequenceNumberAr Count:", len(fetched_messages_by_snum))

# Fetch messages by UID
fetched_messages_by_uid = client.fetch_messages(unique_id_ar)
print("FetchMessages-uniqueIdAr Count:", len(fetched_messages_by_uid))

Mesajları Azalan Sırada Al

Bu görev, mesaj getirme için sayfalama ayarlarını tanımlayarak sağlanır. Bunun için, ascending_sorting özelliğini kullanın PageSettings IMAP istemcisi modülünün bir parçası olan sınıf. ascending_sorting özelliğini ayarlayın PageSettings nesneyi False olarak ayarlayın. Bu, mesajların varsayılan olarak çekildiğinde azalan sırada sıralanması gerektiğini gösterir. Aşağıdaki kod parçacığı, mesajları azalan sırada nasıl alacağınızı gösterir:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

page_settings = ae.clients.imap.PageSettings
page_settings.ascending_sorting = False
page_info = client.list_messages_by_page(5, page_settings)
messages = page_info.items

for message in messages:
    print(message.subject)

Sunucudan Mesajları Al ve Diske Kaydet

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

  1. Kullan ImapClient IMAP sunucusuna bağlanmak için gerekli parametreleri (host, port, kullanıcı adı, şifre) içeren sınıf.
  2. İstenen klasörü select_folder yöntemiyle seçin (ör. "Inbox")
  3. list_messages yöntemini kullanarak mesajları döngü ile alın.
  4. Mesajları kaydetmek için, her mesaj için save_message yöntemini kullanarak dizini belirleyin ve benzersizlik için dosya adına benzersiz kimliği ekleyin.

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

MSG Formatında Mesajları Kaydedin

E-postaları MSG formatında kaydetmek için, ImapClient sınıf. Mesajı, şu tip bir örnek içinde döndürür: MailMessage sınıf. MailMessage.save() yöntemiyle mesaj MSG formatında kaydedilebilir. Aşağıdaki kod parçacığı, mesajları MSG formatında nasıl kaydedeceğinizi gösterir.

Ek Mesaj Parametrelerini (Özet Bilgi) Al

Aşağıdaki kod parçacığı, Aspose.Email kullanarak bir e-posta sunucusuyla nasıl etkileşime geçileceğini gösterir ImapClient e-posta mesajlarını göndermek ve düzenlemek için. Kod, mesaj UID’sini ek parametrelerle ("X-GM-MSGID", "X-GM-THRID") özet bilgi almak için kullanır. Benzer bilgi sıra numarasıyla da alınabilir.

List-Unsubscribe Başlığını Al

"ListUnsubscribe" başlığı, mailing listeler veya otomatik e-posta sistemleri tarafından gönderilen e-posta mesajlarının başlıklarında yaygın olarak bulunur. Alıcıların liste veya otomatik e-postalardan aboneliği iptal edebileceği bir bağlantı veya e-posta adresi sağlar. Aspose.Email, ’list_unsubscribe’ özelliğini sağlar. ImapMessageInfo bu başlığı almak için sınıf. Aşağıdaki kod parçacığı, özelliğin kullanımını gösterir ve istenmeyen e-postalardan aboneliği iptal etme sürecini otomatikleştiren bir sistemin parçası olarak kullanılabilir:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

message_info_col = client.list_messages()

# Iterate through each message
for imap_message_info in message_info_col:
    print("ListUnsubscribe Header:", imap_message_info.list_unsubscribe)

Mesaj Tanımlama Bilgilerini Al

E-posta mesajlarını alırken ve işlerken, mesajların detaylarını sıra numaralarını kullanarak alabilirsiniz.

Aşağıdaki özellikler, bir IMAP posta kutusuyla etkileşim için kullanılır:

Aşağıdaki kod parçacığı, mesajlar hakkında tanımlama bilgilerini nasıl alacağınızı gösterir:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

msg_infos = client.list_messages("INBOX")

for msg_info in msg_infos:
    # fetch by sequence number
    msg = client.fetch_message(msg_info.sequence_number)

    # fetch by unique id
    msg = client.fetch_message(msg_info.unique_id)

IMAP E-posta Mesajlarından Ekleri Listele

Adı, boyutu gibi ek bilgilerini, ek verisini indirmeden elde etmek için aşağıdaki kütüphane kaynaklarını kullanın:

Aşağıdaki kod örneği, Aspose.Email kullanarak her e-posta mesajının eklerini nasıl listeleyeceğinizi gösterir ImapClient:

# List messages
message_info_col = client.list_messages()

# Iterate through each message
for message_info in message_info_col:
    print(f"Attachments for message with sequence number {message_info.sequence_number}:")

    # List attachments for the current message
    attachment_info_col = client.list_attachments(message_info.sequence_number)

    # Iterate through each attachment
    for attachment_info in attachment_info_col:
        print(f"Attachment: {attachment_info.name} (size: {attachment_info.size})")