Exchange 2010 и корневые папки
На Exchange 2003 я могу запустить следующий код.
Использование VB6 и MAPI CDO 1.2.1
Private Sub Command1_Click()
Dim objSession As MAPI.Session
Set objSession = CreateObject("MAPI.Session")
strProfileInfo = myExcServer & vbLf & myExcAlias
objSession.Logon ProfileInfo:=strProfileInfo
For Each nfo In objSession.InfoStores
Text1.Text = Text1.Text & "nfo.Name: " & nfo.Name & vbNewLine
Text1.Text = Text1.Text & "nfo.RootFolder.Name: " & nfo.RootFolder.Name & vbNewLine
Next
Set objMessage = Nothing
Set objInbox = Nothing
objSession.Logoff
Set objSession = Nothing
End Sub
Я получил:
nfo.Name: Public Folders
nfo.RootFolder.Name: IPM_SUBTREE
nfo.Name: Mailbox - pperez pperez
nfo.RootFolder.Name: Top of Information Store
Однако я пытаюсь запустить его на Exchange 2010, но я получаю сообщение об ошибке,
nfo.Name: Public Folders
Run-time error '-2147221219 (8004011D)':
[Collaboration Data Objects - [MAPI_E_FAILONEPROVIDER(8004011D)]]
Исключение создается только в ссылке на корневую папку nfo.RootFolder.Name.
Это свойство не поддерживается в 2010 году?
Любой совет приветствуется, спасибо.
2 ответа
Решение
Ты уверен, что на твоем Exchange 2010 действительно есть магазин PF? Попытайтесь сначала получить доступ к хранилищу по умолчанию (например, прочитать имя папки "Входящие") перед циклическим перемещением по хранилищам - это приведет к тому, что CDO 1.21 попадет на сервер и поймет, что хранилища PF нет.
@ Дмитрий Стребленченко был прав, я только добавил ПФ, и это сработало.
New-PublicFolderDatabase "Public Folders" -Server $MyServer
Mount-Database "Public Folders"