开发:Outlook 2016 加载项:VSTO(C#)
我的公司正在O365(Exchange)上运行,并且我正在开发一个加载项,该加载项收集他们的交换用户信息并执行各种操作。但是,当Outlook帐户设置配置为启用了缓存Exchange模式时,GetExchangeUser()返回null。
如果禁用客户端缓存Exchange模式,则一切正常。但是,我的公司希望保留此功能。
我的粗略理解是,GetExchangeUser()仅在连接到Exchange Server时才起作用。我怀疑缓存模式导致这种情况一直都不是,因此该方法失败了。所以我想知道..
是否有其他收集Exchange用户信息的方法?
// Create a singleton of the Application instance.
Outlook.Application app = new Outlook.Application();
// Get the current user object.
Outlook.ExchangeUser currentUser = app.Session.CurrentUser.AddressEntry.GetExchangeUser();
// ***** currentUser == null when "Use Cached Exchange Mode" is enabled.
// ***** currentUser == Outlook.ExchangeUser object when "Use Cached Exchange Mode" is disabled.
// Set the form details.
textBoxName.Text = currentUser.Name;
textBoxEmployeeID.Text = currentUser.Alias;
我尝试了一些在网上找到的建议,但都没有奏效。例如..
答案 0 :(得分:1)
请记住,ExchageUser
对象(从AddressEntry.GetExchageUser()
返回)不会暴露您无法从AddressEntry.PropertyAccessort.GetProperty()
得到的任何东西。
验证数据是否确实存在-您可以从OutlookSpy中进行操作:单击OutlookSpy功能区上的“命名空间”按钮。展开CurrentUser属性,展开AddressEntry,选择MAPIOBJECT属性,单击“浏览”。在IMailUser窗口中,您是否看到了所需的所有MAPI属性?如果选择一个属性,OutlookSpy将显示其DASL名称。您可以在调用AddressEntry.PropertyAccessort.GetProperty()
时使用该DASL属性名称。