ExchangeService:没有凭据连接,如何检索用户信息?

时间:2014-12-26 11:37:41

标签: c# exchange-server

我正在通过调用ExchangeService来分析用户的Exchange邮箱。此工具需要定期在客户端环境中运行,并通过向Windows用户登录时连接到Exchange服务的服务省略凭据。我可以成功地循环文件夹和项目。

现在我想要检索有关正在使用的邮箱的信息。用户名和(主要)电子邮件应该足够了。但我找不到任何有关如何检索此信息的信息。每个示例都为用户提供凭证,或者从电子邮件地址自动发现Exchange服务。我不希望用户配置任何东西: - )。

有什么建议吗?

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url = new Uri("https://FQDN/EWS/Exchange.asmx");
???
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.SentItems, new ItemView(100)); // this works

我尝试过使用service.ResolveName,但即使使用Environment.UserName也可以提供多个答案

1 个答案:

答案 0 :(得分:0)

执行此操作的最简单方法是使用ConvertId操作并在Mailbox元素中使用无法解析的地址(blah@blah.com始终适用于我)。 Exchange应将此转换为响应中的实际邮箱。例如

        Folder chk = Folder.Bind(service, WellKnownFolderName.Inbox);
        AlternateId aiItem = new AlternateId();
        aiItem.Mailbox = "Blah@Blah.com";
        aiItem.UniqueId = chk.Id.UniqueId;
        aiItem.Format = IdFormat.EwsId;
        String CasServer = service.Url.Host.ToString();
        AlternateIdBase caid = service.ConvertId(aiItem, IdFormat.HexEntryId);
        Console.WriteLine(((AlternateId)caid).Mailbox);

干杯 格伦