Доступ и управление свойствами Outlook MAPI

MAPI properties — это элементы метаданных, используемые в сообщениях Microsoft Outlook, определяющие такие атрибуты, как отправитель, получатель, тема, вложения и пользовательские данные.

Aspose.Email for C++ позволяет разработчикам программно получать доступ, изменять и удалять эти свойства в MapiMessage объекты, вложения и именованные свойства.

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

  • Name – Строковый идентификатор свойства.
  • Tag – Числовой идентификатор, используемый для ссылки на свойство.
  • Data – Массив байтов, представляющий значение свойства.

Чтение свойств MAPI

Aspose.Email позволяет читать свойства MAPI с помощью тегов свойств.

Следующий пример кода демонстрирует, как прочитать и отобразить свойство темы из файла сообщения MAPI (.msg).

  1. Получите путь к каталогу, где хранятся файлы сообщений Outlook.
  2. Загрузите файл сообщения Outlook ("message.msg") в MapiMessage объекта.
  3. Получить доступ к коллекции свойств MAPI из сообщения.
  4. Попробуйте получить свойство темы с помощью PR_SUBJECT (ANSI) тег.
  5. Если ANSI‑свойство темы не найдено, попытайтесь получить Unicode‑свойство темы, используя PR_SUBJECT_W.
  6. Если свойство темы существует, выведите его строковое значение в консоль.

Задать MAPI‑свойства

MAPI‑свойства можно задавать для сообщений или получателей, чтобы определить пользовательские атрибуты, тип электронной почты или статус синхронизации.

Следующий пример кода демонстрирует, как создать MAPI‑сообщение, установить несколько пользовательских MAPI‑свойств, включая детали отправителя и получателя, флаги сообщения и время изменения, а затем сохранить сообщение в файл.

Примечание: Вспомогательная функция ConvertDateTime() преобразует System::DateTime в массив байтов filetime, совместимый с MAPI, для свойств даты/времени следующего вида:

int64_t filetime = t.ToFileTime();

System::ArrayPtr<uint8_t> d = System::MakeArray<uint8_t>(8, 0);

d[0] = (uint8_t)(filetime & 0xFF);

d[1] = (uint8_t)((filetime & 0xFF00) >> 8);

d[2] = (uint8_t)((filetime & 0xFF0000) >> 16);

d[3] = (uint8_t)((filetime & 0xFF000000) >> 24);

d[4] = (uint8_t)((filetime & 0xFF00000000) >> 32);

d[5] = (uint8_t)((filetime & 0xFF0000000000) >> 40);

d[6] = (uint8_t)((filetime & 0xFF000000000000) >> 48);

d[7] = (uint8_t)(((uint64_t)filetime & 0xFF00000000000000) >> 56);

Чтение именованных свойств MAPI

Named MAPI properties — пользовательские свойства, добавляемые пользователями или приложениями.

Aspose.Email позволяет читать эти свойства из сообщений и вложений.

Чтение именованных MAPI‑свойств из MSG‑файлов

Следующий пример кода демонстрирует, как загрузить файл MAPI‑сообщения, получить все его именованные MAPI‑свойства и пройтись по ним, чтобы найти и отобразить значения конкретных именованных свойств ("TEST" и "MYPROP"). Он показывает, как получать доступ к пользовательским или расширенным свойствам в MAPI‑сообщении, перечисляя коллекцию свойств и условно обрабатывая свойства в зависимости от их именованных идентификаторов.

Доступ к именованным MAPI‑свойствам во вложениях

Именованные MAPI‑свойства во вложениях можно получить аналогично:

Удаление MAPI‑свойств

Вы можете удалять как стандартные, так и именованные MAPI‑свойства из сообщений или вложений, как показано в примере кода ниже: