我可以使用.net从用户名获取交换(不是AD)的电子邮件地址吗?

时间:2010-12-09 15:18:30

标签: .net exchange-server

有没有办法进入交换数据存储?我想在我的c#/ .net应用程序中提取用户的电子邮件地址 - 最好使用用户名。

我在AD中这样做,但AD中的电子邮件地址是错误的,我得到了反弹。看到AD与电子邮件有多么不可靠,我需要将其作为我唯一的拯救恩典。

任何线索?

2 个答案:

答案 0 :(得分:1)

我主要是PowerShell用户但是当我这样做时,我使用System.DirectoryServices.DirectorySearcher .NET方法,如下所示:

# Bind to OU Container
$OUPath = "LDAP://OU=SomeContainer,DC=domain,DC=com"
$SearchOU = [ADSI]$OUPath

# Use System.DirectoryServices.DirectorySearcher to Find objects in Container
$Searcher = New-Object System.DirectoryServices.DirectorySearcher($SearchOU)

# Filter results
$LDAPQueryFilter = "(&(HomeMDB=*)(mail=*)(objectClass=user))"
$Searcher.Filter = $LDAPQueryFilter

# Return results
$SearchResults = $Searcher.FindAll()

正如其他人提到的那样,你想要枚举ProxyAddresses集合,这是一个带有多值属性的AD字段(它基本上是一个字符串数组)。

希望这有点帮助?​​

答案 1 :(得分:0)

正如其他响应所示,通过Exchange 2010的所有Exchange版本都直接在Active Directory中读写用户数据。没有其他存储库。甚至Exchange Online也可以在AD中读取和写入数据。我建议您仔细检查您使用的AD属性来阅读电子邮件地址。

如果您希望直接避免AD查询,可以使用EWS进行AD查询: http://vivekiyer.net/2010/07/17/querying-the-global-address-list-gal-via-exchange-web-services-ews/