我正在浏览AD环境中的所有用户,并阅读他们的电子邮件地址,以便在另一个系统中更新它。我正在使用System.DirectoryServices
库。下面的简单例子。我发现的是,mail
属性并不总是正确的,即使用户在Exchange中有一个有效的邮箱设置和功能,通常也会丢失。所以,问题是,给定一个DirectoryEntry
,除了阅读mail
属性之外,是否有任何方法可以列出来自Exchange的用户的主要电子邮件地址(以及理想的任何别名)?我见过一些examples that use the proxyAddresses
attribute,但这些似乎也不可靠。我正在寻找直接来自Exchange的解决方案。没有关于它的事情。这是他们的电子邮件地址。从给定的电子邮件地址获取电子邮件地址DirectoryEntry
DirectorySearcher search = new DirectorySearcher("(&(mail=*))");
search.PageSize = 1000;
search.PropertiesToLoad.Add("mail");
foreach(SearchResult result in search.FindAll())
{
DirectoryEntry entry = result.GetDirectoryEntry();
Console.WriteLine(entry.Properties["mail"].Value);
}
你对'PrincipalContext'熟悉吗?你也可以通过这个域名的电子邮件地址获得这些信息。也可以通过代码改变这行'entry.Properties [“mail”]。Value'到以下'entry.Properties [“mail”]。Value.ToString();' – MethodMan 2014-11-04 20:32:28
@DJKRAZE只读取'mail'属性。 – 2014-11-04 20:34:51
您是否曾尝试使用PrincipalContext获取所有用户的列表,或者至少尝试使用您的用户名,这将是您在网络中使用的SamAccount名称..您将看到它将返回电子邮件地址外观提供有关如何使用PrincipalContext获取所有AD用户的示例 – MethodMan 2014-11-04 20:37:54