Настройка программной категории Outlook?

Кажется, что не много информации или каких-либо хороших образцов кода для автоматической настройки категорий Outlook 2007 MailItem.

MSDN имеет ограниченную страницу, и упоминает, используя функцию VB Разделить, говоря более или менее "вы от себя отсюда, так что разобраться с самим собой".

Насколько я могу судить, мы манипулируем категориями как свойство строки с разделителями-запятыми для mailitem. Кажется, это немного примитивно, так это все, что нужно?

Все ли просто выкапывают свою библиотеку строковых функций и анализируют свойство "Категории", надеясь не путаться, когда несколько категорий заданы для одного почтового элемента и (не дай бог) категории переименованы?

Ответ 1

Вы можете манипулировать строкой разделенных запятыми категорий любым способом, который вы выберете. Чтобы вставить категорию, я обычно проверяю, является ли текущая строка нулевой, а затем просто назначьте ее. Если категория не равна нулю, я добавляю ее, если она еще не существует. Чтобы удалить элемент, я просто заменю имя категории пустой строкой.

Добавление категории

 var customCat = "Custom Category";
 if (mailItem.Categories == null) // no current categories assigned
   mailItem.Categories = customCat;
 else if (!mailItem.Categories.Contains(customCat)) // insert as first assigned category
   mailItem.Categories = string.Format("{0}, {1}", customCat, mailItem.Categories);

Удаление категории

var customCat = "Custom Category";
if (mailItem.Categories.Contains(customCat))
  mailItem.Categories = mailItem.Categories.Replace(string.Format("{0}, ", customCat), "").Replace(string.Format("{0}", customCat), "");

Существует множество способов манипулирования строками - они просто решили упростить структуру сериализованных данных.

Я пытаюсь создать свои собственные категории во время запуска надстройки, чтобы убедиться, что они существуют. Конечно, переименование категории является проблемой, но если вы гарантируете, что ваши категории существуют каждый раз при загрузке надстройки, вы можете хотя бы обеспечить некоторый уровень достоверности.

Чтобы управлять категориями Outlook, вы можете использовать ThisAddIn.Application.Session.Categories.

var customCat = "Custom Category";
if (Application.Session.Categories[customCat] == null)  
  Application.Session.Categories.Add(customCat, Outlook.OlCategoryColor.olCategoryColorDarkRed);