使用Exchange SOAP Web服务获取当前登录用户

时间:2018-10-09 20:52:25

标签: soap exchangewebservices

我们正在使用Exchange 2010 SP1 SOAP Web服务。我找不到用于获取当前(经过身份验证的)用户信息的API。

1 个答案:

答案 0 :(得分:0)

  1. 如果要获取当前用户自己的电子邮件:

您可以将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

  1. 如果要获取EWS中已登录用户的显示名称:

如果要使用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?