Установка категории почтового элемента Outlook программно? - PullRequest
11 голосов
/ 06 февраля 2012

Похоже, не так много информации или хороших примеров кода для программной установки категорий Outlook 2007 MailItem.

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

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

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

1 Ответ

20 голосов
/ 07 февраля 2012

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

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

 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);
...