Работа с MAPI‑свойствами
Доступ и установка свойства Outlook MAPI
Класс MapiProperty представляет свойство MAPI, которое содержит:
- Name: строка, представляющая имя свойства.
- Tag: целое число (long), представляющее тег свойства.
- Data: массив байтов, представляющий данные свойства.
Получение свойства MAPI с помощью тега свойства MAPI
Чтобы получить свойства MAPI:
- Создайте экземпляр MapiMessage, загрузив его из файлов или потока.
- Получите MapiProperty из MapiMessage.Properties по ключам MapiPropertyTag.
- Получите данные свойства MapiProperty методом GetX.
Следующий фрагмент кода показывает, как получить свойство MAPI, используя тег свойства MAPI.
Установка свойств MAPI
Следующий фрагмент кода показывает, как задать MAPI‑свойства.
где определение метода convertDateTime выглядит следующим образом:
Чтение именованных свойств MAPI из файлов Outlook MSG
Aspose.Email предоставляет набор API для работы с файлами MSG, включая извлечение именованных свойств MAPI.
Чтение именованных свойств MAPI из файла MSG
Чтобы читать именованные свойства MAPI, мы можем использовать свойство named_properties. MapiMessage класс. Следующий пример кода показывает, как загрузить сообщение, получить все именованные свойства MAPI, пройтись по каждому свойству для проверки его значения:
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}")
Чтение именованного свойства MAPI из вложения
Aspose.Email делает возможным получение всех именованных свойств MAPI вложения. Следующий пример кода показывает, как читать именованные свойства MAPI из вложений:
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()}")
Удаление свойств из MSG и вложений
Этот пример кода демонстрирует создание сообщения Outlook MSG с содержимым тела и вложенным файлом сообщения. Он также показывает, как удалить свойство вложения из созданного сообщения.
import aspose.email as ae
# create an MSG
msg = ae.mapi.MapiMessage("from@doamin.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"Before removal = {msg.attachments[0].properties.count}")