2016-06-14 5 views
1

Рассмотрим следующую ситуацию: Sombody поделился с нами календарем. У меня есть полный доступ к этому календарю. Когда я удаляю элемент в календаре, событие Folder.BeforeItemMove. Все идет нормально. Я хочу отслеживать удаление, проверив идентификатор MoveTo Entry: null или идентификатор записи Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems), который работает. Теперь вернемся к случаю, когда элемент находится в общей папке:Outlook Interop Доступ к удаленному файлу элемента из общего календаря

  • Согласно documentation Свойство olFolderDeletedItems не является не идти в качестве параметра для GetSharedDefaultFolders() (Просто чтобы быть уверенным, я получил доступ к другим папкам, которые были разрешены, которые сработали)
  • Я попытался перечислить коллекцию магазинов. Нет календарь там
  • Я пытался обращаться к хранилищу собственности на папку MoveTo ->null
  • Я пытался получить магазин от сессии (для проверки PR_IPM_WASTEBASKET_ENTRYID) -> Не удается
  • Я CAN получить имя папки Проблема с этим заключается в том, что она может быть переименована и/или локализована, и я не хочу, чтобы массив со всеми именами удаленных папок плавал, если я не могу помочь
  • Я протестировал все это, используя либо простой OOM, либо погашения Интерфейс папок

Любые идеи?

(Испытано в Outlook, 2016)

+0

Я в замешательстве: вы пытаетесь получить доступ к папке «Удаленные» в общем почтовом ящике? Или ловушка, когда элемент удален из общего календаря? –

+0

Удаление элемента в общем календаре (а не в календаре из общего почтового ящика, к которому я могу получить доступ с помощью метода store, как я описал). Я использую шаблон, описанный в MSDN, для обертывания инспекторов (проблем нет там, где я получаю событие перед удалением). Но когда пользователь удаляет встречу, единственным событием, которое вы получаете, являются события папки. Если вы переносите элементы в события папки, вы получаете 7 видов RCW-адов. – ivo

+0

Вы говорите, что событие AppointmentItem.BeforeDelete НЕ стреляет по элементам в общем календаре, даже если вы попали в обертку Инспектора? –

ответ

0

Если у вас есть доступ к Календарю в виде общего календаря (например, отправлено как приглашение EMail вам через OWA), удаленные элементы перейдите к ВАШИМ удаленным элементам Папка. Это вы можете получить через Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderDeletedItems)

Если календарь находится во втором ящике в вашем профиле удаленного элемента перейти к удаленной папке этой учетной записи, которые вы можете Acces через

Outlook.Store _Store = MoveTo.Store;

Outlook.Folder _Folder = MoveTo.GetDefaultFolder (OlDefaultFolders.olFolderDeletedItems) as Outlook.Folder;

Вы можете различать эти два сценария, проверив, является ли Folder.Store нулевым (что относится к календарю общего небезопасного почтового ящика)

0

RDOStore.GetDefaultFolder(olFolderDeletedItems) и RDOSession.GetSharedDefaultFolder(olFolderDeletedItems) оба работают в Redemption.

+0

RDOSession.GetSharedDefaultFolder (olFolderDeletedItems) не будет работать, как указано в документации RDO: Тип папки. Принимает те же значения, что и метод Namespace.GetDefaultFolder в объектной модели Outlook "и в MSDN [Документация] (https://msdn.microsoft.com/en-us/library/office/ff869575.aspx) Они пишут, что нельзя использовать olFolderDeletedItems. Что соответствует моему коду ошибки «Недопустимый аргумент» – ivo

+0

На стороне: получить GetSharedDefaultFolder (NameOrAddressOrObject, FolderType) требуется RDOAddressentry или RDORecipient или имя или адрес электронной почты – ivo

+0

GetSharedDefaultFolder в ** Redemption ** не имеет такого ограничения. olFolderDeletedItems - это еще одна папка по умолчанию. –