通过EWS登录用户的SMTP地址?

时间:2011-05-21 10:54:08

标签: exchangewebservices

我有一个使用EWS Managed API 1.1编写的客户端应用程序。情况如下:

  • 客户端在与Exchange Server相同的域中的计算机上运行。
  • 我有用户的用户名和密码,但没有他们的电子邮件地址。
  • 用户名(例如ABC123 \ 001234)和电子邮件地址(例如joe.bloggs@company.com)之间没有共性。

我可以很好地连接到EWS,发送消息等。

然而,我的软件需要发现经过身份验证的用户的电子邮件地址,并且出于各种要求的原因,不能只是要求用户提供它。

我以为我可以从网络服务中获得这么简单的细节,但我很难过!

这对2007年和2010年都有可能吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用ExchangeService.ResolveName执行此操作。我在Exchange 2007上使用以下EWS托管API代码示例尝试了它,它就像一个魅力:

var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.Url = new Uri("https://serv/EWS/exchange.asmx");
service.Credentials = new NetworkCredential("001234", "PasswordForUser001234", "Domain");

ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) =>
    {
        return true;
    };

var resolvedNames = service.ResolveName("001234");
foreach (var resolvedName in resolvedNames)
{
    Console.WriteLine(resolvedName.Mailbox.Address);
}