【问题标题】:Get user's Exchange server and email address in .NET在 .NET 中获取用户的 Exchange 服务器和电子邮件地址
【发布时间】:2012-03-31 03:32:38
【问题描述】:

你好。我想知道我的用户的 Exchange 服务器的地址(假设她在典型的 Windows 办公网络中)。这是在 C# 应用程序中。


我已经有了用户的电子邮件地址,在引用 System.DirectoryServices.AccountManagement

后,我在 System.DirectoryServices.AccountManagement.UserPrincipal.Current.EmailAddress 找到了它

【问题讨论】:

  • Exchange server 2007 和 2010 附带 Autodiscover -- 不确定它是否适用于您的方案。

标签: c# .net windows exchange-server directoryservices


【解决方案1】:

我将它用于我的 Exchange 客户端应用程序。

  1. 安装Exchange Web Services Managed API
  2. 更改 C# 项目的 Properties/Application 将目标框架更改为“.NET Framework 4”而不是“.NET 4 Client Profile”
  3. 参考C:\Program Files\Microsoft\Exchange\Web Services\1.1\Microsoft.Exchange.WebServices.dll

现在代码:

var exchange = new ExchangeService();
exchange.AutodiscoverUrl(from);
var server = exchange.Url.Host;
Console.WriteLine(server);

这是MSDN documentation。但请注意,它适用于 API 的未发布版本 1.2。我找不到 1.1 版的文档

【讨论】:

  • 感谢 kjosh,这看起来很有希望。我会在星期一测试它
  • 我安装了您的链接,但找不到要引用的 .dll。终于在C:\Program Files\Microsoft\Exchange\Web Services\1.1找到了
【解决方案2】:

您正在寻找名为 homeMDB 的 AD 属性: http://msdn.microsoft.com/en-us/library/ms980583(v=exchg.65).aspx

我认为这个属性没有很好的 .NET 包装器,因此您需要使用较低级别的 LDAP API 来获取它。

请注意,使用更高版本的 Exchange(即 2010),您可以连接到任何 CAS 角色,并且 Exchange 会找出路由。

【讨论】:

  • 对不起,我不明白如何使用您发布的内容。
  • 对 System.DirectoryServices 的调用实际上只是使用 LDAP 查询 Active Directory 以获取 userprincipal 对象。它充当了一个很好的 .NET 包装器来读取特定的 LDAP 属性。 Exchange 将哪个 Exchange 服务器存储在同一用户主体对象上,但它位于名为 homeMDB 的属性中。看起来 System.DirectoryServices 没有一个很好的 .NET 包装器,因此您需要使用 DirectoryEntry 之类的东西来读取属性。见support.microsoft.com/kb/313114
  • 至于我的说明,如果您使用的是更高版本的 Exchange 服务器,您甚至可能不需要知道是哪台 Exchange 服务器。在这种情况下,您可以简单地指向与 OWA 相同的服务器,并且“它会正常工作”。
【解决方案3】:

您是否考虑过使用自动发现功能? http://technet.microsoft.com/en-us/library/bb124251.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2018-10-27
    • 2014-04-07
    • 2011-09-07
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多