Arbeiten mit MAPI‑Eigenschaften
Den MAPI‑Elementtyp in einem PST‑Ordner bestimmen
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
import aspose.pycore as pycore
pst = ae.storage.pst.PersonalStorage.from_file("test.pst")
folder = pst.root_folder.get_sub_folder("Calendar")
for message_info in folder.enumerate_messages():
msg = pst.extract_message(message_info)
# Get the class type based on msg.supported_type
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 = pycore.cast(ae.mapi.MapiContact, 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 = pycore.cast(ae.mapi.MapiCalendar, 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 = pycore.cast(ae.mapi.MapiDistributionList, 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 = pycore.cast(ae.mapi.MapiJournal, 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 = pycore.cast(ae.mapi.MapiNote, 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 = pycore.cast(ae.mapi.MapiTask, msg.to_mapi_message_item())
# You can access to MapiTask properties there
Zugriff auf und Verwaltung von MAPI‑Eigenschaften
Die MapiProperty Die Klasse repräsentiert eine MAPI‑Eigenschaft, die Folgendes enthält:
- Name: ein String, der den Namen der Eigenschaft darstellt.
- Tag: ein Long‑Integer, das das Tag der Eigenschaft darstellt.
- Data: ein Byte‑Array, das die Daten der Eigenschaft repräsentiert.
MAPI‑Eigenschaft über Property Tag abrufen
Das nachstehende Code‑Beispiel lädt eine MAPI‑Nachricht, ruft Schlüssel‑eigenschaften wie Betreff und Internet‑Codepage ab und behandelt das mögliche Fehlen dieser Eigenschaften sicher. So erhalten Sie MAPI‑Eigenschaften:
- Laden Sie die MAPI‑Nachricht aus einer Datei mit der laden Methode.
- Verwenden Sie die MapiPropertyTag Klasse zum Zugriff auf spezifische Eigenschaften einer MAPI‑Nachricht, wie Betreff und Internet‑Codepage.
- Umgang mit fehlenden Eigenschaften.
from aspose.email.mapi import MapiMessage, MapiPropertyTag
# Load from file
msg = MapiMessage.load("message.msg")
# Access the MapiPropertyTag.PR_SUBJECT property
prop = msg.properties[MapiPropertyTag.SUBJECT]
# If the property is not found, check the MapiPropertyTag.PR_SUBJECT_W (which is a // Unicode peer of the MapiPropertyTag.PR_SUBJECT)
if prop is None:
prop = msg.properties[MapiPropertyTag.SUBJECT_W]
# Cannot found
if prop is None:
print("No property found!")
# Get the property data as string
subject = prop.get_string()
print("Subject:" + subject)
# Read internet code page property
prop = msg.properties[MapiPropertyTag.INTERNET_CPID]
if prop is not None:
print("CodePage:" + str(prop.get_long()))
MAPI‑Eigenschaften setzen
Das folgende Code‑Snippet zeigt, wie Sie MAPI‑Eigenschaften setzen.
Benannte MAPI‑Eigenschaften lesen
Aspose.Email bietet eine Reihe von APIs zur Arbeit mit MSG‑Dateien, einschließlich des Extrahierens benannter MAPI‑Eigenschaften.
Benannte MAPI‑Eigenschaften aus MSG-Dateien lesen
Um benannte MAPI‑Eigenschaften zu lesen, können Sie die named_properties Eigenschaft des MapiMessage Klasse. Das folgende Codebeispiel zeigt, wie man eine Nachricht lädt, alle benannten MAPI‑Eigenschaften abruft und jede Eigenschaft durchläuft, um ihren Wert zu prüfen:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Get all named MAPI properties
properties = msg.named_properties.values
# Read all properties in foreach loop
for prop in properties:
# Read any specific property
if prop.descriptor.canonical_name == "PidLidSideEffects":
print(f"{prop.descriptor.canonical_name} = {prop}")
if prop.descriptor.canonical_name == "PidLidInternetAccountName":
print(f"{prop.descriptor.canonical_name} = {prop}")
Benannte MAPI‑Eigenschaften aus Anhängen lesen
Aspose.Email ermöglicht das Abrufen aller benannten MAPI‑Eigenschaften eines Anhangs. Das folgende Codebeispiel zeigt, wie benannte MAPI‑Eigenschaften aus Anhängen gelesen werden:
import aspose.email as ae
msg = ae.mapi.MapiMessage.load("my.msg")
# Get all named MAPI properties
attach_properties = msg.attachments[0].named_properties.values
# Read all properties in foreach loop
for prop in attach_properties:
# Read any specific property
if prop.descriptor.name == "AttachmentOriginalUrl":
print(f"{prop.descriptor.name} = {prop.get_string()}")
if prop.descriptor.name == "AttachmentWasSavedToCloud":
print(f"{prop.descriptor.name} = {prop.get_boolean()}")
Eigenschaftsverwaltung
Eigenschaften aus MSG-Dateien und Anhängen entfernen
Das untenstehende Codebeispiel demonstriert die Erstellung einer Outlook MSG-Nachricht mit Body-Inhalt und einer angehängten Nachrichten-Datei. Es zeigt außerdem, wie man eine Anhangseigenschaft aus der erstellten Nachricht löscht.
import aspose.email as ae
# create an MSG
msg = ae.mapi.MapiMessage("from@domain.com", "to@domain.com", "subject", "body")
msg.set_body_content("<html><body><h1>This is the body content</h1></body></html>", ae.mapi.BodyContentType.HTML)
# load message and add it to created MSG as attachment
attachment = ae.mapi.MapiMessage.load("attach.msg")
msg.attachments.add("Outlook2 Test subject.msg", attachment)
# count of attachment properties before removal
print(f"Before removal = {msg.attachments[0].properties.count}")
# Delete anyone attachment property
msg.attachments[0].remove_property(923467779)
# count of attachment properties after removal
print(f"After removal = {msg.attachments[0].properties.count}")
Konvertieren von MSG in MIME-Nachricht
Aspose.Email API bietet die Möglichkeit, MSG-Dateien mithilfe des to_mail_message Methode.
Timeout für Nachrichtenkonvertierung und Laden festlegen
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.
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, um die Farbkategorie einer Nachricht festzulegen, wie im folgenden Codebeispiel gezeigt wird:
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)