Pobieranie i wymienianie e‑maili z serwera IMAP
Wymień wiadomości ze skrzynki
Metoda ’list_messages’ klasy ImapClient klasa pobiera listę wszystkich wiadomości z aktualnie wybranego folderu (w tym przypadku „Inbox”). Lista ta zawiera obiekty metadanych wiadomości, które zwykle obejmują informacje takie jak identyfikatory wiadomości, numery sekwencyjne, UID‑y oraz ewentualne podsumowania, takie jak tematy lub informacje o nadawcy.
Poniższy fragment kodu demonstruje, jak pobrać metadane wiadomości z folderu Skrzynka odbiorcza i wyświetlić całkowitą liczbę znajdujących się w nim wiadomości:
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)}")
Wymienianie wiadomości ze wsparciem stronicowania
W scenariuszach, w których serwer pocztowy zawiera dużą liczbę wiadomości w skrzynce, często pożądane jest wymienianie lub pobieranie wiadomości z obsługą stronicowania. Aspose.Email ImapClient klasa pozwala na pobieranie wiadomości z serwera z obsługą stronicowania.
Rekurencyjne wymienianie wiadomości
Protokół IMAP umożliwia rekurencyjne wymienianie wiadomości z folderu skrzynki pocztowej, w tym również z podfolderów. Poniższy fragment kodu demonstruje, jak rekurencyjnie wymienić wiadomości:
Wymień identyfikatory MIME Message ID
Ten ImapMessageInfo klasa oferuje wygodny sposób dostępu do MIME MessageId do identyfikacji wiadomości bez konieczności pobierania całej zawartości. Poniżej fragment kodu, który demonstruje, jak wymienić MIME MessageId:
Wymień wiadomości z użyciem MultiConnection
Ten ImapClient klasa oferuje właściwość use_multi_connection, która umożliwia użycie wielu połączeń przy operacjach o dużym obciążeniu. Dodatkowo, możesz określić liczbę połączeń w trybie wielopołączeniowym przy użyciu właściwości connections_quantity. Poniższy fragment kodu ilustruje, jak wykorzystać tryb wielopołączeniowy do wymieniania wiadomości:
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)
Należy zauważyć, że użycie tego trybu nie musi koniecznie prowadzić do zwiększenia wydajności.
Pobierz wiadomości po numerze sekwencji lub unikalnym ID
API Aspose.Email pozwala wygenerować dwie listy wiadomości, jedną zawierającą numery sekwencyjne, a drugą unikalne identyfikatory wszystkich wiadomości w skrzynce odbiorczej. Aby pobrać wiadomości z serwera IMAP po ich identyfikatorach, użyj metody fetch_messages klasy ImapClient klasa. Poniższy fragment kodu demonstruje, jak wymienić wiadomości po identyfikatorach:
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))
Pobierz wiadomości w kolejności malejącej
Zadanie realizuje się poprzez zdefiniowanie ustawień paginacji przy pobieraniu wiadomości. W tym celu użyj właściwości ascending_sorting klasy PageSettings klasa, będąca częścią modułu klienta IMAP. Ustaw atrybut ascending_sorting na PageSettings ustawienie obiektu na False. Wskazuje to, że wiadomości powinny być domyślnie sortowane w kolejności malejącej podczas pobierania. Poniższy fragment kodu pokazuje, jak pobrać wiadomości w kolejności malejącej:
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)
Pobierz wiadomości z serwera i zapisz na dysku
Ten ImapClient klasa może pobrać wiadomości z serwera IMAP i zapisać je w formacie EML na dysku lokalnym. Następujące kroki są wymagane, aby zapisać wiadomości na dysku:
- Użyj ImapClient klasa z niezbędnymi parametrami (host, port, nazwa użytkownika, hasło) do połączenia z serwerem IMAP.
- Wybierz żądany folder, wywołując metodę select_folder (np. „Inbox”)
- Pobierz wiadomości, iterując po nich przy użyciu metody list_messages.
- Aby zapisać wiadomości, dla każdej wiadomości użyj metody save_message, podając katalog i dopisując unikalny identyfikator do nazwy pliku w celu zapewnienia unikalności.
Poniższy fragment kodu pokazuje, jak pobrać wiadomości e‑mail z serwera i zapisać je:
Zapisz wiadomości w formacie MSG
Aby zapisać e‑maile w formacie MSG, wywołaj metodę fetch_message klasy ImapClient klasa. Zwraca wiadomość jako instancję MailMessage klasa. Następnie można wywołać metodę MailMessage.save(), aby zapisać wiadomość w formacie MSG. Poniższy fragment kodu pokazuje, jak zapisać wiadomości w formacie MSG.
Pobierz dodatkowe parametry wiadomości (informacje podsumowujące)
Poniższy fragment kodu demonstruje, jak współdziałać z serwerem e‑mail przy użyciu Aspose.Email ImapClient do wysyłania i manipulacji wiadomościami e‑mail. Kod używa UID wiadomości do pobrania informacji podsumowujących z dodatkowymi parametrami ("X-GM-MSGID", "X-GM-THRID"). Podobne informacje są pobierane przy użyciu numeru sekwencyjnego.
Uzyskaj Nagłówek List-Unsubscribe
Nagłówek "ListUnsubscribe" jest zwykle dołączany do nagłówków wiadomości e‑mail wysyłanych przez listy mailingowe lub zautomatyzowane systemy e‑mail. Zawiera on link lub adres e‑mail, którego odbiorcy mogą użyć, aby wypisać się z listy mailingowej lub z automatycznych wiadomości. Aspose.Email udostępnia właściwość ’list_unsubscribe’ klasy ImapMessageInfo klasa do pobrania tego nagłówka. Poniższy fragment kodu demonstruje użycie tej właściwości i może być użyty jako część systemu automatyzującego proces wypisywania się z niechcianych e‑maili:
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)
Uzyskaj Informacje o Identyfikacji Wiadomości
Podczas pobierania i przetwarzania wiadomości e‑mail możesz pobierać szczegóły wiadomości przy użyciu ich numerów sekwencyjnych.
Poniższe funkcje są używane do interakcji ze skrzynką IMAP:
-
Aspose.Email.ImapMessageInfo klasa – reprezentuje informacje identyfikacyjne o wiadomości w skrzynce pocztowej.
-
Aspose.Email.ImapMessageInfo.sequence_number właściwość - Numer kolejny wiadomości.
-
Aspose.Email.ImapMessageInfo.unique_id właściwość - Unikalny identyfikator wiadomości.
Poniższy fragment kodu pokazuje, jak uzyskać informacje identyfikacyjne o wiadomościach:
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)
Wymień załączniki z wiadomości e‑mail IMAP
Aby uzyskać informacje o załącznikach, takie jak nazwa i rozmiar, bez pobierania danych załącznika, użyj następujących zasobów bibliotecznych:
-
ImapAttachmentInfo klasa – reprezentuje informacje o załączniku (rozmiar, nazwa, typ mediów).
-
ImapAttachmentInfoCollection klasa – reprezentuje kolekcję ImapAttachmentInfo.
-
metoda list_attachments(sequence_number) klasy ImapClient klasa – zwraca iterowalną kolekcję informacji o załącznikach wiadomości.
Poniższy przykład kodu demonstruje, jak wymienić załączniki dla każdej wiadomości e‑mail przy użyciu 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})")