Verwalten von Nachrichten‑Dateien mit Aspose.Email.Outlook

Bestimmen des MAPI‑Objekttyps in einem PST‑Ordner

Eine PST‑Datei enthält typischerweise verschiedene Datenarten, wie E‑Mails, Kalendereinträge, Kontakte und mehr. Die MapiItemType Die Klasse von Aspose.Email ermöglicht den Zugriff und die Kategorisierung verschiedener MAPI‑Elemente innerhalb einer PST‑Datei. Der nachstehende Code demonstriert, wie man den Typ eines MAPI‑Elements in einem PST‑Ordner ermittelt:

import aspose.email as ae

pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for messageInfo in folder.enumerate_messages():
    msg = pst.extract_message(messageInfo)

    # Get the class type based on msg.SupportedType
    item_type = msg.supported_type

    # Non-supported type. It cannot be accessed as appropriate item type.
    if item_type == ae.mapi.MapiItemType.NONE:
        print("Item type not supported")
    # An email message.
    elif item_type == ae.mapi.MapiItemType.MESSAGE:
        # You can access to MapiMessage properties there.
        # A subject for example
        print(msg.subject)
    # A contact item. Can be accessed as MapiContact.
    elif item_type == ae.mapi.MapiItemType.CONTACT:
        contact = msg.to_mapi_message_item()
        # You can access to MapiContact properties there. 
        # A name_info.display_name for example. 
        print(contact.name_info.display_name)
    # A calendar item. Can be accessed as MapiCalendar.
    elif item_type == ae.mapi.MapiItemType.CALENDAR:
        calendar = msg.to_mapi_message_item()
        # You can access to MapiCalendar properties there. 
        # A location for example. 
        print(calendar.location)
    # A distribution list. Can be accessed as MapiDistributionList.
    elif item_type == ae.mapi.MapiItemType.DIST_LIST:
        dlist = msg.to_mapi_message_item()
        # You can access to MapiDistributionList properties there
    # A Journal entry. Can be accessed as MapiJournal.
    elif item_type == ae.mapi.MapiItemType.JOURNAL:
        journal = msg.to_mapi_message_item()
        # You can access to MapiJournal properties there
    # A StickyNote. Can be accessed as MapiNote.
    elif item_type == ae.mapi.MapiItemType.NOTE:
        note = msg.to_mapi_message_item()
        # You can access to MapiNote properties there
    # A Task item. Can be accessed as MapiTask.
    elif item_type == ae.mapi.MapiItemType.TASK:
        task = msg.to_mapi_message_item()
        # You can access to MapiTask properties there

Konvertierung von MSG zu MIME‑Nachricht

Die Aspose.Email‑API ermöglicht die Konvertierung einer MSG‑Datei in eine MIME‑Nachricht über die Methode ToMailMessage.

Festlegen von Timeout für Konvertierung und Laden einer Nachricht

Um die Zeit in Millisekunden der Nachrichtenkonvertierung zu begrenzen (Standardwert 3 s), verwenden Sie die timeout‑Eigenschaft von MailConversionOptions Klasse wird verwendet.

So können Sie ein Timeout für Nachrichtenkonvertierung und Ladevorgänge festlegen:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("my.msg")
options = ae.mapi.MailConversionOptions()
options.timeout = 5000
mailMessage = msg.to_mail_message(options)

Durch das Festlegen eines Timeouts für die Nachrichtenkonvertierung und Ladevorgänge können Sie die maximal erlaubte Laufzeit dieser Vorgänge steuern. Nach dem Setzen des Timeouts können Sie mit der Nachrichtenkonvertierung und den Ladevorgängen fortfahren.

Verarbeitung von Outlook‑Template (OFT)‑Dateien

Ein OFT‑Datei laden, ändern und speichern

Outlook‑Templates (OFT) bieten eine praktische Möglichkeit, den Vorgang des Versendens wiederkehrender E‑Mails zu vereinfachen. Anstatt jedes Mal dieselbe E‑Mail von Grund auf neu zu verfassen, können Sie eine Nachricht in Outlook erstellen und als Outlook‑Template (OFT) speichern. Später können Sie bei Bedarf schnell eine ähnliche Nachricht aus dem Template generieren. Dieser Ansatz erspart Ihnen das erneute Schreiben desselben Inhalts im Nachrichtentext, das Festlegen der Betreffzeile, die Formatierung usw.

von Aspose.Email MailMessage Klasse bietet ein leistungsstarkes Werkzeug zum Laden und Bearbeiten von Outlook‑Template‑Dateien (OFT). Sobald ein Outlook‑Template in einer Instanz der MailMessage‑Klasse geladen ist, können Sie problemlos Eigenschaften wie Absender, Empfänger, Nachrichten‑Body, Betreff und verschiedene weitere Attribute aktualisieren.

import aspose.email as ae

# Load the OFT file
oft_file_path = "your_template.oft"
mail_message = ae.MailMessage.load(oft_file_path)

# Update properties as needed
mail_message.subject = "Updated Subject"
mail_message.body = "Updated body text."

# Save the updated message as an MSG file
msg_file_path = "updated_message.msg"
mail_message.save(msg_file_path, ae.MailMessageSaveType.outlook_message_format_unicode)

print(f"Updated message saved to {msg_file_path}")

Nachdem Sie die erforderlichen Änderungen vorgenommen haben, können Sie die E‑Mail senden mittels SmtpClient Klasse:

# Send the email
smtpClient.send(message)

Speichern einer Outlook‑MSG‑Datei als Vorlage

Zu diesem Zweck können Sie die MailMessage Klasse zum Erstellen einer E‑Mail und anschließenden Speichern als OFT‑Datei. Das folgende Code‑Beispiel zeigt, wie man eine E‑Mail als Outlook‑Template speichert:

import aspose.email as ae

# Create a new MailMessage
message = ae.MailMessage()
message.subject = "Sample Outlook Template"
message.html_body = "<html><body>This is the body of the email.</body></html>"
message.from_address = ae.MailAddress("your.email@example.com", "Your Name")

# Save the MailMessage as an Outlook Template (OFT) file
oft_file_path = "sample_template.oft"
message.save(oft_file_path, ae.SaveOptions.default_oft)

print(f"Outlook Template saved as {oft_file_path}")

OFT oder MSG: Bestimmen des Typs einer MapiMessage

Das folgende Code‑Snippet veranschaulicht, wie man ermittelt, ob eine geladene MAPI‑Nachricht eine normale E‑Mail‑Nachricht oder ein Outlook‑Template (OFT) darstellt:

msg = ae.mapi.MapiMessage.Load("message.msg");
isOft = msg.is_template # returns false

msg = ae.mapi.MapiMessage.Load("message.oft");
isOft = msg.IsTemplate; # returns true

Nach dem Laden der MSG‑Datei prüft der Code, ob die is_template‑Eigenschaft des MapiMessaage Klasse ist True oder False. Gibt sie false zurück, ist die geladene Nachricht eine Standard‑E‑Mail, keine Outlook‑Vorlage; gibt sie true zurück, handelt es sich um eine Outlook‑Vorlage.

Speichern von MapiMessage oder MailMessage als OFT

Die SaveOptions ist eine abstrakte Basisklasse für Klassen, die dem Benutzer ermöglichen, beim Speichern einer MailMessage in ein bestimmtes Format zusätzliche Optionen anzugeben. Das folgende Code‑Beispiel zeigt, wie man eine Nachricht im OFT‑Format speichert:

import aspose.email as ae

# Save the MailMessage to OFT format
eml = ae.MailMessage.load("message.eml")

eml.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
eml.save("message.oft", save_options)

# Save the MapiMessage to OFT format
msg = ae.mapi.MapiMessage.load("message.msg")

msg.save("message.oft", ae.SaveOptions.default_oft)

# or alternative way 2
save_options = ae.MsgSaveOptions(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

# or alternative way 3
save_options = ae.SaveOptions.create_save_options(ae.MailMessageSaveType.outlook_template_format)
msg.save("message.oft", save_options)

Verwalten von Nachrichten mit digitalen Signaturen

Die Bibliothek stellt die LoadOptions Klasse, eine abstrakte Basisklasse für Klassen, die dem Benutzer ermöglichen, beim Laden einer MailMessage aus einem bestimmten Format zusätzliche Optionen anzugeben. Die Option zur Signatur‑Erhaltung ist standardmäßig gesetzt.

Konvertieren von EML zu MSG unter Erhaltung der Signatur

Das nachstehende Codebeispiel zeigt, wie man eine Nachricht lädt, sie in das MSG‑Format konvertiert und als MSG speichert (die Signatur wird standardmäßig beibehalten):


import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
message = ae.MailMessage.load("Message.eml", loadOptions)
# Save as MSG
message.save("ConvertEMLToMSG_out.msg", ae.SaveOptions.default_msg_unicode)

S/MIME‑Nachrichten von MSG nach EML konvertieren

Aspose.Email ermöglicht die Konvertierung von MSG nach EML unter Bewahrung einer digitalen Signatur, wie im folgenden Code‑Snippet gezeigt.

import aspose.email as ae

# Load mail message
loadOptions = ae.EmlLoadOptions()
smime_eml = ae.MailMessage.load("smime.eml", loadOptions)

conversion_options = ae.mapi.MapiConversionOptions(ae.mapi.OutlookMessageFormat.UNICODE)
msg = ae.mapi.MapiMessage.from_mail_message(smime_eml, conversion_options)
# Save File to disk
msg.save("ConvertMIMEMessagesFromMSGToEML_out.msg")

Farbkategorie für Outlook‑MSG‑Dateien festlegen

Manchmal müssen Sie E‑Mails von besonderer Wichtigkeit unterscheiden und visuell organisieren. Die Bibliothek bietet eine Möglichkeit, dies zu tun, indem einer Nachrichten­einheit eine bestimmte Farbe zugewiesen wird. Wenn Sie eine Farbkategorie für ein Element festlegen, können Sie dieses und verwandte Elemente auf einen Blick leicht identifizieren und finden. Verwenden Sie FollowUpManager Klasse zum Festlegen der Farbkategorie einer Nachricht, siehe folgendes Code‑Beispiel:


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("my.msg")

# Add Two categories
ae.mapi.FollowUpManager.add_category(msg, "Purple Category")
ae.mapi.FollowUpManager.add_category(msg, "Red Category")

# Retrieve the list of available categories
categories = ae.mapi.FollowUpManager.get_categories(msg)

# Remove the specified category and then Clear all categories
ae.mapi.FollowUpManager.remove_category(msg, "Red Category")
ae.mapi.FollowUpManager.clear_categories(msg)

Zugriff auf Nachverfolgungsinformationen aus MSG‑Datei

Lesebestätigungs‑ und Lieferbestätigungsinformationen extrahieren

Das folgende Codebeispiel demonstriert, wie Empfängerinformationen und deren Track‑Status aus einer Outlook‑Nachricht (MSG)‑Datei extrahiert werden:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("received.msg")

for recipient in msg.recipients:
    print(f"Recipient: {recipient.display_name}")
    print(f"Delivery time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_DELIVERY]}")
    print(f"Read time:  {recipient.properties[ae.mapi.MapiPropertyTag.RECIPIENT_TRACKSTATUS_TIME_READ]}")

Erstellen von Weiterleitungs‑ und Antwortnachrichten

Aspose.Email bietet einfache Methoden zum Erstellen von Weiterleitungs‑ und Antwortnachrichten basierend auf bestehenden Nachrichten.

Erstellen einer Weiterleitungsnachricht

Sie können die ForwardMessageBuilder Klasse zum Erstellen einer Weiterleitungsnachricht, indem die Quellnachricht, Absender, Empfänger, Betreff und Text festgelegt werden. Weiterleitungsnachrichten können die ursprüngliche Nachricht als Anhang oder als Text des weitergeleiteten Inhalts enthalten. Sie haben die Flexibilität, weitere Eigenschaften wie Anhänge, Header und Formatierungsoptionen anzupassen. Das nachstehende Code‑Beispiel zeigt, wie man eine Weiterleitungsnachricht erstellt:


import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ForwardMessageBuilder()
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART

forwardMsg = builder.build_response(msg)
forwardMsg.save("forward_out.msg")

Erstellen einer Antwortnachricht

Die ReplyMessageBuilder Die Klasse wird verwendet, um Antwort‑Einstellungen zu konfigurieren, einschließlich Quellnachricht, Absender, Empfänger, Antwortmodus, Betreff‑Präfix und den Antwortnachrichtentext. Antwortnachrichten können in verschiedenen Modi wie „Antwort an Absender“ oder „Antwort an alle“ erstellt werden, je nach Bedarf. Sie können diverse Eigenschaften wie Anhänge, Header und Formatierungsoptionen für die Antwortnachricht anpassen. Das nachstehende Code‑Beispiel zeigt, wie man eine Weiterleitungsnachricht erstellt:

import aspose.email as ae

msg = ae.mapi.MapiMessage.load("original.msg")

builder = ae.tools.ReplyMessageBuilder()

# Set ReplyMessageBuilder Properties
builder.reply_all = True
builder.addition_mode = ae.tools.OriginalMessageAdditionMode.TEXTPART
builder.response_text = "<p><b>Dear Friend,</b></p> I want to do is introduce my co-author and co-teacher. <p><a href=\"www.google.com\">This is a first link</a></p><p><a href=\"www.google.com\">This is a second link</a></p>";

replyMsg = builder.build_response(msg)
replyMsg.save("reply_out.msg")