我有一些代碼通過遍歷Application.Session.Stores
集合來查找用戶有權訪問的所有聯繫人文件夾。如何通過Outlook的對象模型找到「People's Contacts」文件夾?
這適用於用戶的聯繫人以及所有公共聯繫人文件夾。它還通過工具 - >帳戶設置...菜單命令找到用戶添加的其他郵箱帳戶中的所有聯繫人文件夾。
但是,這需要用戶完全訪問其他人的帳戶。當用戶只能訪問其他人的聯繫人時,該聯繫人視圖中的「人員聯繫人」組下顯示該人員的聯繫人。如何找到那些在Session.Stores
下未顯示的聯繫人文件夾?
爲了在不添加對完整郵箱的訪問權限的情況下查看其他用戶的聯繫人文件夾,請從Outlook菜單中單擊文件 - >打開 - >其他用戶的文件夾...。在對話框中輸入其他用戶的名稱,然後從文件夾類型下拉列表中選擇Contacts
。
下面是我用來查找所有用戶的Outlook聯繫人文件夾列表的代碼(減去錯誤檢查和日誌記錄)。我知道這可以(也許應該)使用早期綁定到Outlook.Application
類型,但不影響結果。 EnumerateFolders
是遞歸的,以便它搜索所有子文件夾。
Dim folderList = New Dictionary(Of String, String)
Dim outlookApp = CreateObject(Class:="Outlook.Application")
For Each store As Object In outlookApp.Session.Stores
EnumerateFolders(folderList, store.GetRootFolder)
Next
Private Sub EnumerateFolders(ByRef folderList As Dictionary(Of String, String), ByVal folder As Object)
Try
If folder.DefaultItemType = 2 Then
folderList.Add(folder.EntryID, folder.FolderPath.Substring(2))
End If
For Each subFolder As Object In folder.Folders
EnumerateFolders(folderList, subFolder)
Next
Catch ex As Exception
End Try
End Sub