Arbeiten mit Nachrichten‑Anhängen
Verwalten von Anhängen mit Aspose Outlook
Das Erstellen und Speichern von Outlook‑Message (MSG)‑Dateien erklärt, wie Nachrichten erstellt und gespeichert werden und wie MSG‑Dateien mit Anhängen erzeugt werden. Dieser Artikel beschreibt, wie Outlook‑Anhänge mit Aspose.Email verwaltet werden. Anhänge aus einer Nachrichten‑Datei werden über die Attachments‑Eigenschaft der MapiMessage‑Klasse abgerufen und auf die Festplatte gespeichert. Die Attachments‑Eigenschaft ist eine Auflistung des Typs MapiAttachmentCollection.
Prüfen, ob der Anhang Inline oder regulär ist
"Inline" und "Regular" beziehen sich darauf, wie sie in einer E‑Mail‑Nachricht eingebunden sind. Regular‑Anhänge sind Dateien, die auf herkömmliche Weise angehängt werden. Sie werden typischerweise in einer Liste im E‑Mail‑Client angezeigt und können vom Empfänger heruntergeladen und lokal gespeichert werden. Inline‑Anhänge, auch als eingebettete oder Inline‑Bilder bezeichnet, werden typischerweise verwendet, um Bilder oder andere Medien im Nachrichtentext einzufügen. Sie erscheinen nicht in einer separaten Liste, sondern werden direkt im Inhalt der E‑Mail, zum Beispiel im Textkörper, angezeigt. So können Sie Bilder oder andere Medien, die Teil des Nachrichteninhalts sind, einbinden. Das folgende Codebeispiel demonstriert, wie ermittelt wird, ob ein Anhang inline oder regulär ist:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
for attachment in msg.attachments:
print(f"{attachment.display_name}:{attachment.is_inline}")
Speichern von Anhängen aus Outlook‑Nachricht (MSG)‑Datei
Um Anhänge aus einer MSG‑Datei zu speichern:
- Iterieren Sie über die MapiAttachmentCollection‑Auflistung und holen Sie die einzelnen Anhänge.
- Um die Anhänge zu speichern, rufen Sie die Save()-Methode der MapiAttachment‑Klasse auf.
Das folgende Code‑Snippet zeigt, wie man Anhänge auf die lokale Festplatte speichert.
import aspose.email as ae
data_dir = "C://dataDir/"
file_name = "message.msg"
# Create an instance of MapiMessage from file
message = ae.mapi.MapiMessage.from_file(data_dir + file_name)
# Iterate through the attachments collection
for attachment in message.attachments:
# Save the individual attachment
attachment.save(data_dir + attachment.file_name)
Abrufen verschachtelter Mail‑Nachrichten‑Anhänge
Eingebettete OLE‑Anhänge erscheinen ebenfalls in der Attachment‑Auflistung der MapiMessage‑Klasse. Das folgende Code‑Beispiel analysiert eine Nachrichten‑Datei nach eingebetteten Nachrichten‑Anhängen und speichert sie auf die Festplatte. Die statische Methode FromProperties() der MapiMessage‑Klasse kann eine neue Nachricht aus einem eingebetteten Anhang erstellen. Das folgende Code‑Snippet zeigt, wie man verschachtelte Mail‑Nachrichten‑Anhänge erhält.
import aspose.email as ae
eml = ae.mapi.MapiMessage.load("my.msg")
# Create a MapiMessage object from the individual attachment
get_attachment = ae.mapi.MapiMessage.from_properties(eml.attachments[0].object_data.properties)
# Create an object of type MailMessageInterpreter from the above message and save the embedded message to a file on disk
mail_message = get_attachment.to_mail_message(ae.mapi.MailConversionOptions())
mail_message.save("NestedMailMessageAttachments_out.eml", ae.SaveOptions.default_eml)
Entfernen von Anhängen
Die Aspose‑Outlook‑Bibliothek bietet die Möglichkeit, Anhänge aus Microsoft Outlook‑Nachrichten (.msg)-Dateien zu entfernen:
- Rufen Sie die Methode RemoveAttachments() auf. Sie erhält den Pfad der Nachrichten‑Datei als Parameter. Sie ist als öffentliche statische Methode implementiert, sodass Sie kein Objekt instanziieren müssen.
Das folgende Code‑Snippet zeigt, wie man Anhänge entfernt.
import aspose.email as ae
ae.mapi.MapiMessage.remove_attachments("AttachmentsToRemove_out.msg")
Sie können zudem die statische Methode DestoryAttachment() der MapiMessage‑Klasse aufrufen. Sie arbeitet schneller als RemoveAttachment(), da Letztere die Nachrichten‑datei analysiert.
import aspose.email as ae
# Destroy attachments in the MapiMessage
ae.mapi.MapiMessage.destroy_attachments(data_dir + "AttachmentsToDestroy_out.msg")
Hinzufügen von MSG‑Anhängen
Eine Outlook‑Nachricht kann andere Microsoft Outlook‑Nachrichten als Anhänge enthalten, entweder als reguläre oder eingebettete Nachrichten. Die MapiAttachmentCollection stellt überladene Varianten der Add‑Methode bereit, um Outlook‑Nachrichten mit beiden Anlagentypen zu erstellen.
Probieren Sie es aus!
Fügen Sie E‑Mail‑Anhänge online hinzu oder entfernen Sie sie mit dem kostenlosen Aspose.Email Editor App.
Hinzufügen eines Referenz‑Anhangs zu einer MapiMessage
"Referenz‑Anhang" bezieht sich typischerweise auf einen Anhang, der einen Verweis oder Link zu einer externen Ressource enthält, anstatt die eigentliche Datei. Diese Verweise werden oft in HTML‑E‑Mails verwendet, um auf externe Bilder oder Ressourcen zu verlinken, die auf einem entfernten Server gehostet werden. Anstatt die gesamte Datei einzubetten, enthält ein Referenz‑Anhang eine URL oder einen Verweis auf den externen Inhalt.
Aspose.Email stellt ein Set von Werkzeugen für die korrekte Anzeige von Referenz‑Anhängen bereit, wie im folgenden Code‑Beispiel dargestellt:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
# Add reference attachment
msg.attachments.add("Document.pdf",
"https://drive.google.com/file/d/1HJ-M3F2qq1oRrTZ2GZhUdErJNy2CT3DF/",
"https://drive.google.com/drive/my-drive",
"GoogleDrive")
# Also, you can set additional attachment properties
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PERMISSION_TYPE, int(ae.AttachmentPermissionType.ANYONE_CAN_EDIT))
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_ORIGINAL_PERMISSION_TYPE, 0)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_IS_FOLDER, False)
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PROVIDER_ENDPOINT_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_PREVIEW_URL, "")
msg.attachments[0].set_property(ae.mapi.KnownPropertyList.ATTACHMENT_THUMBNAIL_URL, "")
# Finally save the message
msg.save("msg_with_ref_attach.msg")
Einbetten einer Nachricht als Anhang
Das folgende Code‑Snippet zeigt, wie Outlook‑MSG‑Dateien, die in einer MSG‑Datei eingebettet sind, ein PR_ATTACH_METHOD mit dem Wert 5 enthalten.
import aspose.email as ae
# Create a new MapiMessage
message = ae.mapi.MapiMessage("from@test.com", "to@test.com", "Subj", "This is a message body")
# Load the attachment message
attach_msg = ae.mapi.MapiMessage.load("Message.msg")
# Add the attachment to the message
message.attachments.add("Weekly report.msg", attach_msg)
# Save the message with the embedded message attachment
message.save("WithEmbeddedMsg_out.msg")
Eingebettete Nachrichten aus Anhängen lesen
Das folgende Code‑Snippet zeigt, wie man eine eingebettete Nachricht aus einem Anhang liest.
import aspose.email as ae
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.from_file(file_name)
# Check if the first attachment is an Outlook message
if message.attachments[0].object_data.is_outlook_message:
# Get the embedded message as MapiMessage
embedded_message = message.attachments[0].object_data.to_mapi_message()
# Perform further operations with the embedded message
# ...
Einfügen und Ersetzen von Anhängen
Die Aspose.Email‑API bietet die Möglichkeit, Anhänge an einem bestimmten Index in der übergeordneten Nachricht einzufügen. Außerdem ermöglicht sie das Ersetzen des Inhalts eines Anhangs durch einen anderen Nachrichtenanhang. Das folgende Code‑Snippet zeigt das Einfügen und Ersetzen von Anhängen.
An bestimmter Stelle einfügen
Die Aspose.Email‑API ermöglicht das Einfügen eines MSG‑Anhangs in eine übergeordnete MSG über die Insert‑Methode der MapiAttachmentCollection (MapiAttachmentCollection Insert(int index, string name, MapiMessage msg)). Das folgende Code‑Snippet zeigt, wie man an einer bestimmten Position einfügt.
import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)
# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)
# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)
# Insert the loaded attachment at index 1
message.attachments.insert(1, "new 11", get_data)
Anhangsinhalte ersetzen
Damit können Sie Inhalte eingebetteter Anhänge mit neuen Inhalten über die Replace‑Methode ersetzen. Sie kann jedoch nicht verwendet werden, um einen Anhang mit PR_ATTACH_NUM = 4 (zum Beispiel) in eine Auflistung einzufügen, deren collection.Count = 2 ist. Das folgende Code‑Snippet zeigt, wie man Anhangsinhalte ersetzt.
import aspose.email as ae
from io import BytesIO
file_name = "path/to/file.msg"
# Load the MapiMessage from file
message = ae.mapi.MapiMessage.load(file_name)
# Save the attachment to a memory stream
memory_stream = BytesIO()
message.attachments[2].save(memory_stream)
# Load the attachment from the memory stream
get_data = ae.mapi.MapiMessage.load(memory_stream)
# Replace the attachment at index 1 with the loaded attachment
message.attachments.replace(1, "new 1", get_data)
Umbenennen eines Anhangs in einer MapiMessage
Es ist möglich, die Anzeigenamen der Anhänge in aus einer Datei geladenen E‑Mail‑Nachrichten zu ändern. Das nachstehende Code‑Beispiel zeigt, wie das geht:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("message.msg")
msg.attachments[0].display_name = "New display name 1"
msg.attachments[1].display_name = "New display name 2"