我们正在使用Exchange 2010 SP1 SOAP Web服务。我找不到用于获取当前(经过身份验证的)用户信息的API。
答案 0 :(得分:0)
您可以将ConvertId与通用地址一起使用,然后Exchange将返回该邮箱的PrimarySMTP,例如:
Folder Inbox = Folder.Bind(service, WellKnownFolderName.Inbox);
AlternateId aiAlternateid = new AlternateId(IdFormat.EwsId, Inbox.Id.UniqueId, "mailbox@domain.com");
AlternateIdBase aiResponse = service.ConvertId(aiAlternateid, IdFormat.EwsId);
Console.WriteLine(((AlternateId)aiResponse).Mailbox);
如果您执行基于POX的发现,自动发现还将返回邮箱的PrimarySMTP地址。
要检查其他地址,您也可以使用ResolveName:
Resolve ambiguous names by using EWS in Exchange 2013
如果要使用ResolveName并且想要displayName,则应使用重载来指定操作应返回AD联系人信息。然后,您可以只使用DisplayName属性。
NameResolutionCollection ncCol = service.ResolveName("user@domain.com",ResolveNameSearchLocation.DirectoryOnly,true);
Console.WriteLine(ncCol[0].Contact.DisplayName);
有关更多信息,您可以参考以下链接:
How do I get the displayname of the logged in user in EWS?
How get the current user's own email address or check entered, using Exchange Web Services?