Exchangewebservices EWS:如何将公用文件夹MAPI EntryID转换为EWS FolderID

Exchangewebservices EWS:如何将公用文件夹MAPI EntryID转换为EWS FolderID,exchangewebservices,Exchangewebservices,如果文件夹是私有的,我的代码工作得很好 例如,如果文件夹属于专用消息存储tcFolderId=“00000000 C29BEF8308F4AD4188BDF6CB1517D65401008AC18FCDFD1EF64FBB5D946C2678759800000BC70750000” 但是对于公共消息存储此代码不起作用。 当公共文件夹ID=“00000000 1A447390AA6611CD9BC800AA002FC45A0300D32A8E9A328D734A98B8E1E7D3C591F501

如果文件夹是私有的,我的代码工作得很好 例如,如果文件夹属于专用消息存储tcFolderId=“00000000 C29BEF8308F4AD4188BDF6CB1517D65401008AC18FCDFD1EF64FBB5D946C2678759800000BC70750000”

但是对于公共消息存储此代码不起作用。 当公共文件夹ID=“00000000 1A447390AA6611CD9BC800AA002FC45A0300D32A8E9A328D734A98B8E1E7D3C591F501EE3EFFF60000” 转换后,此代码返回 “Aamkadkwztlhmja2lwq1ntutndnkos04n2m3lwyyzfkzdfjmlmngauaaaaaaaaaaaaaaaraawdtko6mo1zspi44eftxzh1as7j7/+2AAA=”

但这是错误的。 因为我使用FindFolders(WellKnownFolderName.PublicFoldersRoot)重新扫描PublicFoldersRoot,并且此文件夹具有UniqueId=“AQEUAAADGKRZKpMEC2BYACQAC/EWgMA0yqOmjKNc0qYuOHn08WR9QEu4+//TGAAA=”

问题是:
如何将公用邮件存储文件夹EntryID转换为EWS FolderId?

您需要为公用文件夹使用AlternatePublicFolderId类,例如

Public Function mmks_ConvertMAPIFolderIdToEWSFolderId(tcFolderId As String, tcMailBox As String) As String
    Dim loHexEntryID As New AlternatePublicFolderId (IdFormat.HexEntryId, tcFolderId, tcMailBox)
    Dim loEntryId As AlternatePublicFolderId = _pmks_exchangeService.ConvertId(loHexEntryID, IdFormat.EntryId)
Return CType(_pmks_exchangeService.ConvertId(loEntryId, IdFormat.EwsId), AlternatePublicFolderId).UniqueId

End Function

还请记住,多个ID可以引用同一个对象,您不应该直接比较它们。该解决方案非常有用。非常感谢你!
Public Function mmks_ConvertMAPIFolderIdToEWSFolderId(tcFolderId As String, tcMailBox As String) As String
    Dim loHexEntryID As New AlternatePublicFolderId (IdFormat.HexEntryId, tcFolderId, tcMailBox)
    Dim loEntryId As AlternatePublicFolderId = _pmks_exchangeService.ConvertId(loHexEntryID, IdFormat.EntryId)
Return CType(_pmks_exchangeService.ConvertId(loEntryId, IdFormat.EwsId), AlternatePublicFolderId).UniqueId