Hämta och lista e‑post från IMAP-server

Lista meddelanden från brevlådan

’list_messages’-metoden i ImapClient klass hämtar en lista med alla meddelanden från den för närvarande valda mappen ("Inbox" i detta fall). Listan innehåller meddelandemetadatobjekt som vanligtvis inkluderar information som meddelande‑ID, sekvensnummer, UID och eventuellt sammanfattande data som ämnesrader eller avsändarinformation.

Kodsnutten nedan demonstrerar hur du hämtar meddelandemetadata från Inkorgen och skriver ut det totala antalet meddelanden den innehåller:

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)}")

Lista meddelanden med sidningsstöd

I situationer där e‑postservern har ett stort antal meddelanden i brevlådan, är det ofta önskvärt att lista eller hämta meddelanden med sidningsstöd. Aspose.Email ImapClient klass låter dig hämta meddelanden från servern med sidningsstöd.

Lista meddelanden rekursivt

IMAP-protokollet möjliggör rekursiv listning av meddelanden från en brevlådemapp. Det gör det också möjligt att lista meddelanden från dess undermappar. Kodsnutten nedan visar hur du listar meddelanden rekursivt:

Lista MIME‑meddelande‑ID:n

Den ImapMessageInfo klass erbjuder ett smidigt sätt att komma åt MIME MessageId för att identifiera meddelanden utan att behöva extrahera hela meddelandeinnehållet. Nedan är en kodsnutt som demonstrerar hur du listar MIME MessageId:

Lista meddelanden med MultiConnection

Den ImapClient klass erbjuder en use_multi_connection-egenskap, som möjliggör användning av flera anslutningar för operationer med hög belastning. Dessutom kan du ange antalet anslutningar i multi-connection-läget med egenskapen connections_quantity. Följande kodsnutt visar hur du utnyttjar multi-connection-läget för att lista meddelanden:

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)

Observera att användning av detta läge inte nödvändigtvis leder till prestandaförbättring.

Hämta meddelanden efter sekvensnummer eller unikt ID

Aspose.Email API låter dig generera två meddelandelistor, en med sekvensnummer och en annan med unika ID:n för alla meddelanden i inkorgen. För att hämta meddelanden från IMAP-servern efter deras identifierare, använd fetch_messages-metoden i ImapClient klass. Kodsnutten nedan demonstrerar hur du listar meddelanden efter identifierare:

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

Hämta meddelanden i fallande ordning

Uppgiften uppnås genom att definiera sidningsinställningar för meddelandehämtning. För detta ändamål, använd egenskapen ascending_sorting i PageSettings klass som är en del av IMAP-klientens modul. Ställ in attributet ascending_sortingPageSettings objektet till False. Detta indikerar att meddelanden ska sorteras i fallande ordning som standard vid hämtning. Följande kodsnutt visar hur du hämtar meddelanden i fallande ordning:

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)

Hämta meddelanden från servern och spara till disk

Den ImapClient klass kan hämta meddelanden från en IMAP-server och spara dem i EML-format på lokal disk. Följande steg krävs för att spara meddelandena på disk:

  1. Använd ImapClient klass med nödvändiga parametrar (host, port, användarnamn, lösenord) för att ansluta till IMAP-servern.
  2. Välj önskad mapp genom att anropa select_folder-metoden (t.ex. "Inbox")
  3. Hämta meddelanden genom att iterera igenom dem med list_messages-metoden.
  4. För att spara meddelanden, använd för varje meddelande save_message-metoden och ange katalogen, samt lägg till det unika ID:t till filnamnet för att säkerställa unikhet.

Följande kodsnutt visar hur du hämtar e‑postmeddelanden från en server och sparar dem:

Spara meddelanden i MSG-format

För att spara e‑post i MSG-format, anropa fetch_message-metoden i ImapClient klass. Den returnerar meddelandet som en instans av MailMessage klass. Metoden MailMessage.save() kan sedan anropas för att spara meddelandet som MSG. Följande kodsnutt visar hur du sparar meddelanden i MSG-format.

Hämta extra meddelandeparametrar (sammanfattningsinfo)

Kodsnutten nedan demonstrerar hur du interagerar med en e‑postserver med Aspose.Email ImapClient för att skicka och manipulera e‑postmeddelanden. Koden använder meddelande‑UID för att hämta sammanfattningsinformation med extra parametrar ("X-GM-MSGID", "X-GM-THRID"). Liknande information hämtas med sekvensnumret.

Hämta List-Unsubscribe-rubrik

Rubriken "ListUnsubscribe" inkluderas vanligtvis i rubrikerna för e‑postmeddelanden som skickas av e‑postlistor eller automatiserade e‑postsystem. Den erbjuder en länk eller e‑postadress som mottagarna kan använda för att avregistrera sig från e‑postlistan eller automatiserade e‑postmeddelanden. Aspose.Email tillhandahåller egenskapen ’list_unsubscribe’ för ImapMessageInfo klass för att hämta detta rubrik. Kodsnutten nedan demonstrerar användningen av egenskapen och kan användas som en del av ett system för att automatisera processen att avregistrera sig från oönskade e‑postmeddelanden:

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)

Hämta meddelandeidentifieringsinformation

När du hämtar och bearbetar e‑postmeddelanden kan du hämta meddelandedetaljerna med deras sekvensnummer.

Följande funktioner används för att interagera med en IMAP-brevlåda:

Kodsnutten nedan visar hur du får identifieringsinfo om meddelanden:

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)

Lista bilagor från IMAP-e‑postmeddelanden

För att få information om bilagor såsom namn och storlek utan att hämta bilagedata, använd följande bibliotekresurser:

Kodexemplaget nedan demonstrerar hur du listar bilagor för varje e‑postmeddelande med Aspose.Email 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})")