Работа с MAPI‑свойствами

Доступ и установка свойства Outlook MAPI

Класс MapiProperty представляет свойство MAPI, которое содержит:

  • Name: строка, представляющая имя свойства.
  • Tag: целое число (long), представляющее тег свойства.
  • Data: массив байтов, представляющий данные свойства.

Получение свойства MAPI с помощью тега свойства MAPI

Чтобы получить свойства MAPI:

  1. Создайте экземпляр MapiMessage, загрузив его из файлов или потока.
  2. Получите MapiProperty из MapiMessage.Properties по ключам MapiPropertyTag.
  3. Получите данные свойства 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}")