使用 EWS,如果我有会议室的电子邮件地址,如何获取会议室名称?

Using EWS, how do I get a meeting room name if I have its email address?

我有一个会议室电子邮件地址列表,我想知道他们的名字。我如何使用 EWS 和 2010 交换服务器来做到这一点。虽然服务器似乎没有 SP1,所以我不能使用 ExchanceService.ResolveName。如果这样做,我会收到消息 Method ResolveName is only valid for Exchange Server version Exchange2010_SP1 or later.

更新:

实际上,我正在使用 https://outlook.office365.com,所以我不太清楚为什么在尝试使用 ResolveName 方法时会收到上述错误消息。

更新 2:

其实是的,在office365上使用ResolveName是可以的。我只是在实例化 ExchangeSercice 时传递了错误的服务器版本。我传递的是 ExchangeVersion.Exchange2010,但也可以使用 ExchangeVersion.Exchange2010_SP1、ExchangeVersion.Exchange2010_SP2 等

您可以使用如下的ResolveName操作获取会议室名称:

    EmailAddressCollection roomLists = service.GetRoomLists();
    foreach (EmailAddress email in roomLists)
    {
        EmailAddress roomList = email.Address;
        PropertySet props = new PropertySet(BasePropertySet.FirstClassProperties);
        NameResolutionCollection nrCol = service.ResolveName(email.Address, ResolveNameSearchLocation.DirectoryOnly, true, props);
        foreach (NameResolution nr in nrCol)
        {
            Console.WriteLine(nr.Contact.DisplayName);
        }
    }