E-mails ophalen en weergeven van IMAP-server

Berichten uit mailbox weergeven

De ’list_messages’-methode van de ImapClient klasse haalt een lijst op van alle berichten uit de momenteel geselecteerde map (in dit geval de "Inbox"). Deze lijst bevat berichtmetadata-objecten, die doorgaans informatie bevatten zoals bericht-ID’s, volgordenummers, UID’s en eventueel samenvattende gegevens zoals onderwerpregels of afzenderinformatie.

Het onderstaande codefragment toont hoe je de berichtmetadata uit de Inbox haalt en het totale aantal berichten dat het bevat afdrukt:

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

Berichten weergeven met pagineringondersteuning

In scenario’s waarin de e-mailserver een groot aantal berichten in de mailbox bevat, is het vaak gewenst om berichten op te sommen of op te halen met pagineringondersteuning. De Aspose.Email ImapClient klasse stelt je in staat berichten van de server op te halen met pagineringondersteuning.

Berichten recursief weergeven

Het IMAP-protocol maakt recursief weergeven van berichten uit een mailboxmap mogelijk. Het maakt ook weergeven van berichten uit submappen mogelijk. Het onderstaande codefragment toont hoe je berichten recursief weergeeft:

MIME Message ID’s weergeven

De ImapMessageInfo klasse biedt een handige manier om de MIME MessageId te benaderen voor het identificeren van berichten zonder de volledige berichtinhoud te hoeven extraheren. Hieronder staat een codefragment dat toont hoe je MIME MessageId weergeeft:

Berichten weergeven met MultiConnection

De ImapClient klasse biedt een use_multi_connection-eigenschap, die het gebruik van meerdere verbindingen voor operaties met hoge belasting mogelijk maakt. Daarnaast kun je het aantal verbindingen in de multi-connection-modus specificeren met de connections_quantity-eigenschap. Het onderstaande codefragment illustreert hoe je de multi-connection-modus gebruikt om berichten weer te geven:

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)

Houd er rekening mee dat het gebruik van deze modus niet per se tot een prestatieverbetering leidt.

Berichten ophalen op volgordernummer of unieke ID

De Aspose.Email API stelt je in staat twee lijsten met berichten te genereren, één met de volgordenummers en een andere met de unieke ID’s van alle berichten in de inbox. Om berichten van de IMAP-server op hun identifiers op te halen, gebruik je de fetch_messages-methode van de ImapClient klasse. Het onderstaande codefragment laat zien hoe je berichten op ID’s weergeeft:

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

Berichten in aflopende volgorde ophalen

De taak wordt bereikt door pagineringsinstellingen te definiëren voor het ophalen van berichten. Gebruik hiervoor de ascending_sorting-eigenschap van de PageSettings klasse die deel uitmaakt van de IMAP-clientmodule. Stel het ascending_sorting-attribuut in op de PageSettings object op False. Dit geeft aan dat berichten standaard in aflopende volgorde moeten worden gesorteerd bij het ophalen. Het onderstaande codefragment toont hoe je berichten in aflopende volgorde ophaalt:

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)

Berichten van server ophalen en opslaan op schijf

De ImapClient klasse kan berichten van een IMAP-server ophalen en opslaan in EML-formaat op een lokale schijf. De volgende stappen zijn vereist om de berichten op te slaan:

  1. Gebruik de ImapClient klasse met de benodigde parameters (host, poort, gebruikersnaam, wachtwoord) om verbinding te maken met de IMAP-server.
  2. Selecteer de gewenste map door de select_folder-methode aan te roepen (bijv. "Inbox")
  3. Haal berichten op door er doorheen te itereren met de list_messages-methode.
  4. Om berichten op te slaan, gebruik je voor elk bericht de save_message-methode waarbij je de map opgeeft en de unieke ID aan de bestandsnaam toevoegt voor uniciteit.

Het onderstaande codefragment toont hoe je e-mailberichten van een server ophaalt en opslaat:

Berichten opslaan in MSG-indeling

Om e-mails op te slaan in MSG-formaat, roep je de fetch_message-methode van de ImapClient klasse. Het retourneert het bericht als een instantie van de MailMessage klasse. De MailMessage.save()-methode kan vervolgens worden aangeroepen om het bericht op te slaan in MSG. Het onderstaande codefragment toont hoe je berichten opslaat in MSG-formaat.

Extra berichtparameters ophalen (samenvattende info)

Het onderstaande codefragment demonstreert hoe je interactie hebt met een e-mailserver met behulp van Aspose.Email ImapClient om e-mailberichten te verzenden en te manipuleren. De code gebruikt de bericht-UID om samenvattende informatie op te halen met extra parameters ("X-GM-MSGID", "X-GM-THRID"). Vergelijkbare informatie wordt opgehaald met het volgordernummer.

List-Unsubscribe-header ophalen

De "ListUnsubscribe"-header wordt meestal opgenomen in de headers van e-mailberichten die door mailinglijsten of geautomatiseerde e-mailsystemen worden verzonden. Het biedt een link of e-mailadres dat ontvangers kunnen gebruiken om zich af te melden voor de mailinglijst of geautomatiseerde e-mails. Aspose.Email biedt de eigenschap ’list_unsubscribe’ van de ImapMessageInfo klasse om deze header op te halen. Het onderstaande codefragment toont het gebruik van de eigenschap en kan worden gebruikt als onderdeel van een systeem om het afmeldingsproces van ongewenste e-mails te automatiseren:

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)

Berichtidentificatie-informatie ophalen

Bij het ophalen en verwerken van e-mailberichten kun je de details van de berichten ophalen met behulp van hun volgordenummers.

De volgende functies worden gebruikt om met een IMAP-mailbox te interageren:

Het onderstaande codefragment toont hoe je identificatie-informatie over berichten verkrijgt:

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)

Bijlagen uit IMAP-e-mailberichten weergeven

Om informatie over bijlagen zoals naam en grootte te verkrijgen zonder de bijlagegegevens op te halen, gebruik je de volgende bibliotheekbronnen:

Het onderstaande codevoorbeeld toont hoe je bijlagen voor elk e-mailbericht lijst met behulp van 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})")