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