E-Mails vom IMAP-Server abrufen und auflisten
Nachrichten aus dem Postfach auflisten
Die ’list_messages’-Methode der ImapClient Klasse ruft eine Liste aller Nachrichten aus dem aktuell ausgewählten Ordner (in diesem Fall "Inbox") ab. Diese Liste enthält Nachrichten‑Metadatenobjekte, die typischerweise Informationen wie Nachrichten‑IDs, Sequenznummern, UIDs und ggf. Zusammenfassungsdaten wie Betreffzeilen oder Absenderinformationen enthalten.
Das folgende Code‑Snippet demonstriert, wie Sie die Metadaten der Nachrichten aus dem Posteingang abrufen und die Gesamtanzahl der enthaltenen Nachrichten ausgeben:
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)}")
Nachrichten mit Paging‑Unterstützung auflisten
In Szenarien, in denen der E‑Mail-Server eine große Anzahl von Nachrichten im Postfach enthält, ist es häufig erwünscht, Nachrichten mit Paging‑Unterstützung aufzulisten oder abzurufen. Das Aspose.Email ImapClient Klasse ermöglicht das Abrufen von Nachrichten vom Server mit Paging‑Unterstützung.
Nachrichten rekursiv auflisten
Das IMAP‑Protokoll ermöglicht das rekursive Auflisten von Nachrichten aus einem Postfachordner. Es ermöglicht zudem das Auflisten von Nachrichten aus dessen Unterordnern. Das folgende Code‑Snippet demonstriert, wie Nachrichten rekursiv aufgelistet werden:
MIME‑Message‑IDs auflisten
Die ImapMessageInfo Klasse bietet eine bequeme Möglichkeit, auf die MIME‑MessageId zuzugreifen, um Nachrichten zu identifizieren, ohne den gesamten Nachrichteninhalt extrahieren zu müssen. Nachfolgend ein Code‑Snippet, das zeigt, wie MIME‑MessageIds aufgelistet werden:
Nachrichten mit MultiConnection auflisten
Die ImapClient Klasse bietet die use_multi_connection-Eigenschaft, die die Verwendung mehrerer Verbindungen für Operationen mit hoher Last ermöglicht. Zusätzlich können Sie die Anzahl der Verbindungen im Multi‑Connection‑Modus mit der connections_quantity‑Eigenschaft festlegen. Das folgende Code‑Snippet veranschaulicht, wie der Multi‑Connection‑Modus zum Auflisten von Nachrichten genutzt wird:
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)
Bitte beachten Sie, dass die Verwendung dieses Modus nicht zwangsläufig zu einer Leistungssteigerung führen muss.
Nachrichten nach Sequenznummer oder eindeutiger ID abrufen
Die Aspose.Email‑API ermöglicht es, zwei Nachrichtenlisten zu erzeugen, eine mit den Sequenznummern und eine mit den eindeutigen IDs aller Nachrichten im Posteingang. Um Nachrichten vom IMAP-Server anhand ihrer Kennungen abzurufen, verwenden Sie die fetch_messages‑Methode der ImapClient Klasse. Das folgende Code‑Snippet demonstriert, wie Nachrichten nach Kennungen aufgelistet werden:
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))
Nachrichten in absteigender Reihenfolge abrufen
Die Aufgabe wird durch die Definition von Paginierungseinstellungen für den Nachrichtenabruf erreicht. Verwenden Sie hierfür die ascending_sorting‑Eigenschaft der PageSettings Klasse, die Teil des IMAP‑Client‑Moduls ist. Setzen Sie das Attribut ascending_sorting auf der PageSettings Objekt auf False setzen. Dies zeigt an, dass Nachrichten standardmäßig beim Abrufen absteigend sortiert werden sollen. Das folgende Code‑Snippet zeigt, wie Nachrichten in absteigender Reihenfolge abgerufen werden:
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)
Nachrichten vom Server abrufen und auf Festplatte speichern
Die ImapClient Klasse kann Nachrichten von einem IMAP-Server abrufen und im EML-Format auf einer lokalen Festplatte speichern. Die folgenden Schritte sind erforderlich, um die Nachrichten auf die Festplatte zu speichern:
- Verwenden Sie die ImapClient Klasse mit den notwendigen Parametern (Host, Port, Benutzername, Passwort) zur Verbindung mit dem IMAP-Server.
- Wählen Sie den gewünschten Ordner aus, indem Sie die select_folder-Methode aufrufen (z. B. "Inbox")
- Rufen Sie Nachrichten ab, indem Sie mit der list_messages-Methode über sie iterieren.
- Um Nachrichten zu speichern, verwenden Sie für jede Nachricht die save_message-Methode, geben Sie das Verzeichnis an und hängen Sie die eindeutige ID an den Dateinamen an, um Eindeutigkeit zu gewährleisten.
Das folgende Code‑Snippet zeigt, wie Sie E‑Mail‑Nachrichten von einem Server abrufen und speichern:
Nachrichten im MSG-Format speichern
Um E‑Mails im MSG‑Format zu speichern, rufen Sie die fetch_message‑Methode der ImapClient Klasse. Sie gibt die Nachricht als Instanz von MailMessage Klasse. Die MailMessage.save()-Methode kann anschließend aufgerufen werden, um die Nachricht im MSG‑Format zu speichern. Das folgende Code‑Snippet zeigt, wie Nachrichten im MSG‑Format gespeichert werden.
Zusätzliche Nachrichtenparameter abrufen (Zusammenfassungsinfo)
Das folgende Code‑Snippet demonstriert, wie man mit einem E‑Mail‑Server mittels Aspose.Email interagiert ImapClient zum Senden und Manipulieren von E‑Mail‑Nachrichten. Der Code verwendet die Nachrichten‑UID, um Zusammenfassungsinformationen mit zusätzlichen Parametern ("X-GM-MSGID", "X-GM-THRID") abzurufen. Ähnliche Informationen werden über die Sequenznummer abgerufen.
List-Unsubscribe‑Header abrufen
Der Header "ListUnsubscribe" wird üblicherweise in den Headern von E‑Mail‑Nachrichten eingefügt, die von Mailinglisten oder automatisierten E‑Mail‑Systemen gesendet werden. Er stellt einen Link oder eine E‑Mail‑Adresse bereit, die Empfänger zum Abbestellen der Mailingliste oder automatisierten E‑Mails nutzen können. Aspose.Email stellt die Eigenschaft ’list_unsubscribe’ des ImapMessageInfo Klasse zum Abrufen dieses Headers. Das untenstehende Code‑Snippet demonstriert die Verwendung der Eigenschaft und kann als Teil eines Systems verwendet werden, um den Vorgang des Abbestellens unerwünschter E‑Mails zu automatisieren:
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)
Nachrichtenidentifikationsinformationen abrufen
Beim Abrufen und Verarbeiten von E‑Mail‑Nachrichten können Sie die Details der Nachrichten anhand ihrer Sequenznummern abrufen.
Die folgenden Funktionen werden verwendet, um mit einem IMAP‑Postfach zu interagieren:
-
Aspose.Email.ImapMessageInfo Klasse – Stellt Identifizierungsinformationen zu einer Nachricht in einem Postfach dar.
-
Aspose.Email.ImapMessageInfo.sequence_number Eigenschaft - Die Sequenznummer einer Nachricht.
-
Aspose.Email.ImapMessageInfo.unique_id Eigenschaft - Die eindeutige ID einer Nachricht.
Das folgende Code‑Snippet zeigt, wie Identifizierungsinformationen zu Nachrichten gewonnen werden:
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)
Anhänge aus IMAP-E‑Mail‑Nachrichten auflisten
Um Informationen zu Anhängen wie Name und Größe zu erhalten, ohne die Anhangsdaten abzurufen, verwenden Sie die folgenden Bibliotheksressourcen:
-
ImapAttachmentInfo Klasse – Stellt Informationen zu einem Anhang dar (Größe, Name, Medientyp).
-
ImapAttachmentInfoCollection Klasse – Stellt die Sammlung von ImapAttachmentInfo.
-
list_attachments(sequence_number)‑Methode der ImapClient Klasse – Gibt ein iterierbares Objekt oder eine Sammlung von Anhangsinformationen für die Nachricht zurück.
Das folgende Codebeispiel demonstriert, wie Sie Anhänge für jede E‑Mail‑Nachricht mit Aspose.Email auflisten 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})")