【问题标题】:Active Directory, no mail attribute foundActive Directory,未找到邮件属性
【发布时间】:2018-04-19 15:56:17
【问题描述】:

我希望使用用 C# 编写的应用程序定期更新数据库中的用户表,其中包含 Active Directory 上所有用户的姓名和电子邮件地址。我使用 DirectorySearcher 检索用户。

 DirectorySearcher dirSearch = new DirectorySearcher();
 dirSearch.Filter = "(&(objectClass=user)(objectCategory=person))";
 dirSearch.PropertiesToLoad.Add("mail");
 SearchResultCollection resultCol = dirSearch.FindAll();

这确实会返回系统上的用户列表,但只返回一个用户的电子邮件地址。

我承认我在 Active Directory 和 IT 管理员等方面的经验有限。是否正在寻找正确的位置来检索此类信息?

非常感谢您的帮助!

【问题讨论】:

  • 这可能是一个愚蠢的问题,但 Active Directory 是否链接到 Exchange?所以如果我和我的同事有一个在 Outlook 中运行的电子邮件帐户,是否应该在 AD 中不填充 mail 属性?
  • 是的,如果您使用的是 Exchange,则应为所有拥有邮箱的帐户填充 mail 属性。 mail 属性对应于 AD 用户和计算机中“常规”选项卡上的“电子邮件”字段。

标签: c# active-directory ldap exchange-server


【解决方案1】:
目录服务中 object

Attributes(相当于 recordcolumns),例如Active Directory 可能是可选的。意思是,它们可能存在,也可能不存在。

这与关系数据库有很大的不同,关系数据库中的所有列都将始终返回记录(尽管它们可能包含null 值)。

因此,在您的情况下,只有一个用户拥有电子邮件地址,您可能会认为缺少值是 null

【讨论】:

    【解决方案2】:

    首先在评论中回答您的问题,是的 Active Directory 链接到 Exchange。事实上,Exchange 高度依赖 Active Directory,99% 的 Exchange 用户级别设置都存储在 Active Directory 中。 Exchange 使用 AD 作为其用户设置数据库,如果您查看 AD 中的用户属性列表,您会发现数十个以“msexch”开头的属性名称。

    回到您的主要问题,ma​​il 不是 Exchange 服务器使用的电子邮件地址的正确属性。您需要查询的正确 AD 属性是 proxyaddresses。请注意它是一个多值属性,因为一个用户可以有多个电子邮件地址。例如,如果它是我的帐户:

    smtp:dongmao@company.com
    smtp:dong_mao@company.com
    SMTP:maodong@company.com
    smtp:mao_dong@company.com
    

    带有大写 SMTP 的地址是主要的电子邮件地址,而其他的都是次要的。如果您想向我发送电子邮件,所有这些都可以使用。

    总之,实现你想要的

    • 搜索属性代理地址
    • 稍微更新您的代码,使其能够处理多值 AD 字段
    • 您决定是仅存储主电子邮件地址还是将所有地址存储到您的数据库中。如果仅主要,则过滤掉以大写 SMTP 开头的地址。

    那么邮件属性是用来做什么的呢?

    • 它是 AD 中的一个联系人属性,用于提供必要的联系信息。就像电话号码、手机号码、办公室、实际地址等一样。它存在于您的组织中,无需安装任何电子邮件系统。

    • 在早期版本的 Exchange (

    【讨论】:

    • 感谢您的回复,内容非常丰富!不幸的是,我也没有返回 proxyaddresses 属性。
    • 您还有其他工具可以检索广告数据吗?我们应该隔离这个问题,看看他们是否真的没有属性值或者是你的代码有问题。检查 AD 的一种选择是 PowerShell AD 模块:blogs.msdn.microsoft.com/rkramesh/2012/01/17/…
    猜你喜欢
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多