Как обнаружить этот компьютер только в именах папок Outlook в надстройке VSTO?

Начиная с Outlook 2013 и более поздних версий, Outlook может иногда (в случае файлов .OST) добавлять суффикс «(Только для этого компьютера)» к именам папок. В других случаях (файлы .PST) этого не происходит. Таким образом, в зависимости от конкретных обстоятельств имя папки может быть «Какая-то папка» или «Какая-то папка (только на этом компьютере)» или «Какая-то папка (мало ли что еще)» для локализованных версий Outlook.

Есть ли способ получить имя папки без этого суффикса (чтобы я всегда получал, скажем, «какую-то папку», независимо от того, присутствует ли этот суффикс в имени папки или нет? В настоящее время я не вижу никакого свойства в объекте Outlook.Folder, который вернет мне это короткое имя.

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

Другим подходом может быть создание временной папки и проверка, отличается ли ее имя от того, которое я указал. Если они разные, то эта разница и есть суффикс. Однако создание/удаление папки только для этого тоже не выглядит элегантно.

В инструменте MFCMapi я также не могу найти «Контакты» нигде в свойствах MAPI папки с именем «Контакты (только этот компьютер)», поэтому это не похоже на ограничение Outlook OOM.

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


person Alex    schedule 30.08.2018    source источник


Ответы (1)


Не полагайтесь на имена папок. Помимо суффикса «(Только для этого компьютера)» для хранилищ IMAP4, имена могут быть локализованы.

Всегда используйте Namespace.GetDefaultFolder и Store.GetDefaultFolder.

person Dmitry Streblechenko    schedule 30.08.2018
comment
Я знаю, как получить папку по умолчанию (на самом деле, я упоминаю об этом в своем вопросе - ... получение имени папки контактов по умолчанию, проверка, заканчивается ли оно на ...). Мне нужно это для любой папки, включая папки, созданные пользователем (у них тоже есть этот суффикс). - person Alex; 30.08.2018
comment
Мне нужно это - я имею в виду, что мне нужно обнаружение и удаление суффикса. - person Alex; 30.08.2018
comment
Вы можете просто рекурсивно перебирать все папки, начиная с папки верхнего уровня, но я до сих пор не понимаю, почему имена папок важны. - person Dmitry Streblechenko; 30.08.2018
comment
Мое программное обеспечение синхронизирует папки Outlook с другим хранилищем. Если у меня есть папка, скажем, «Заказы», ​​я должен создать папку «Заказы» в этом хранилище. Но если папка «Заказы» (только для этого компьютера), я все равно должен создавать «Заказы», ​​а не «Заказы» (только для этого компьютера). - person Alex; 31.08.2018