Načíst a vypsat e‑maily z IMAP serveru

Vypsat zprávy z poštovní schránky

Metoda ’list_messages’ třídy ImapClient třída načte seznam všech zpráv z aktuálně vybrané složky (v tomto případě "Inbox"). Tento seznam obsahuje objekty s metadata zpráv, typicky zahrnující informace jako ID zprávy, pořadová čísla, UID a případně souhrnné údaje jako předmět nebo informace o odesílateli.

Níže uvedený úryvek kódu demonstruje, jak získat metadata zpráv z Inboxu a vypsat celkový počet zpráv, které obsahuje:

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

Vypsat zprávy s podporou stránkování

V situacích, kdy poštovní server obsahuje velké množství zpráv v poštovní schránce, se často požaduje vypsat nebo načíst zprávy s podporou stránkování. Aspose.Email ImapClient třída vám umožňuje získávat zprávy ze serveru s podporou stránkování.

Vypsat zprávy rekurzivně

Protokol IMAP umožňuje rekurzivní výpis zpráv ze složky poštovní schránky. To také umožňuje výpis zpráv z podadresářů. Níže uvedený úryvek kódu demonstruje, jak rekurzivně vypsat zprávy:

Vypsat MIME Message ID

The ImapMessageInfo třída nabízí pohodlný způsob, jak získat MIME MessageId pro identifikaci zpráv bez nutnosti extrahovat celý obsah zprávy. Níže je úryvek kódu, který demonstruje, jak vypsat MIME MessageId:

Vypsat zprávy s více spojeními

The ImapClient třída nabízí vlastnost use_multi_connection, která umožňuje použití více spojení pro operace s vysokým zatížením. Dále můžete v režimu více spojení specifikovat počet spojení pomocí vlastnosti connections_quantity. Níže uvedený úryvek kódu ukazuje, jak využít režim více spojení pro výpis zpráv:

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)

Všimněte si, že použití tohoto režimu nutně nevede ke zvýšení výkonu.

Načíst zprávy podle pořadového čísla nebo unikátního ID

API Aspose.Email vám umožňuje vytvořit dva seznamy zpráv, jeden obsahující pořadová čísla a druhý jedinečná ID všech zpráv v inboxu. Pro načtení zpráv z IMAP serveru podle jejich identifikátorů použijte metodu fetch_messages třídy ImapClient třída. Níže uvedený úryvek kódu demonstruje, jak vypsat zprávy podle identifikátorů:

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

Získat zprávy v sestupném pořadí

Úkol je splněn definováním nastavení stránkování pro načítání zpráv. K tomuto účelu použijte vlastnost ascending_sorting třídy PageSettings třída, která je součástí modulu IMAP klienta. Nastavte atribut ascending_sorting na PageSettings objekt na False. To naznačuje, že zprávy mají být při načítání ve výchozím nastavení tříděny sestupně. Níže uvedený úryvek kódu ukazuje, jak načíst zprávy v sestupném pořadí:

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)

Načíst zprávy ze serveru a uložit na disk

The ImapClient třída může načíst zprávy z IMAP serveru a uložit je ve formátu EML na lokální disk. K uložení zpráv na disk jsou potřeba následující kroky:

  1. Použijte ImapClient třída s potřebnými parametry (host, port, uživatelské jméno, heslo) pro připojení k IMAP serveru.
  2. Vyberte požadovanou složku voláním metody select_folder (např. "Inbox")
  3. Získejte zprávy iterací přes ně pomocí metody list_messages.
  4. Pro uložení zpráv, pro každou zprávu použijte metodu save_message, zadejte adresář a přidejte jedinečné ID k názvu souboru pro zajištění jedinečnosti.

Níže uvedený úryvek kódu ukazuje, jak načíst e‑mailové zprávy ze serveru a uložit je:

Uložit zprávy ve formátu MSG

Pro uložení e‑mailů ve formátu MSG zavolejte metodu fetch_message třídy ImapClient třída. Vrací zprávu jako instanci třídy MailMessage třída. Poté můžete zavolat metodu MailMessage.save(), která uloží zprávu do formátu MSG. Níže uvedený úryvek kódu ukazuje, jak uložit zprávy ve formátu MSG.

Načíst extra parametry zprávy (souhrnné informace)

Níže uvedený úryvek kódu ukazuje, jak komunikovat s e‑mailovým serverem pomocí Aspose.Email ImapClient pro odesílání a manipulaci s e‑mailovými zprávami. Kód používá UID zprávy k získání souhrnných informací s extra parametry ("X-GM-MSGID", "X-GM-THRID"). Podobné informace jsou získány pomocí pořadového čísla.

Získat záhlaví List-Unsubscribe

Záhlaví "ListUnsubscribe" je běžně zahrnováno v záhlávích e‑mailových zpráv odesílaných rozesílacími seznamy nebo automatizovanými e‑mailovými systémy. Poskytuje odkaz nebo e‑mailovou adresu, kterou příjemci mohou použít k odhlášení z rozesílacího seznamu či automatických e‑mailů. Aspose.Email poskytuje vlastnost ’list_unsubscribe’ třídy ImapMessageInfo třída pro získání tohoto záhlaví. Následující úryvek kódu ukazuje použití vlastnosti a může být použit jako součást systému pro automatizaci procesu odhlášení od nechtěných e‑mailů:

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)

Získat informace o identifikaci zprávy

Při načítání a zpracování e‑mailových zpráv můžete získat podrobnosti zpráv pomocí jejich pořadových čísel.

Následující funkce se používají pro interakci s IMAP poštovní schránkou:

Níže uvedený úryvek kódu ukazuje, jak získat identifikační informace o zprávách:

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)

Vypsat přílohy z IMAP e‑mailových zpráv

Pro získání informací o přílohách, jako jsou název a velikost, bez načítání dat přílohy, použijte následující knihovní zdroje:

Níže uvedená ukázka kódu demonstruje, jak vypsat přílohy pro každou e‑mailovou zprávu pomocí 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})")