我試圖獲取與給定AD用戶關聯的所有電子郵件地址。C# - 查找Active Directory用戶的所有電子郵件地址
因爲我有域名和登錄名(如域\用戶名)和我在AD中存儲的電子郵件地址的用戶:
- 郵件屬性。
- 在
proxyAddresses
屬性。
到目前爲止,我不知道用什麼C#API連接到AD,以及如何正確過濾用戶獲取所有電子郵件地址。我使用.NET 3.5。
謝謝。
我試圖獲取與給定AD用戶關聯的所有電子郵件地址。C# - 查找Active Directory用戶的所有電子郵件地址
因爲我有域名和登錄名(如域\用戶名)和我在AD中存儲的電子郵件地址的用戶:
proxyAddresses
屬性。到目前爲止,我不知道用什麼C#API連接到AD,以及如何正確過濾用戶獲取所有電子郵件地址。我使用.NET 3.5。
謝謝。
你看過DirectoryEntry類嗎? 如果您設置了LDAP字符串,則可以從那裏獲取屬性。郵件是「郵件」,具有諷刺意味嗎?
下面是在System.DirectoryServices
命名空間中使用各種類的可能解決方案。
string username = "username";
string domain = "domain";
List<string> emailAddresses = new List<string>();
PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, domain);
UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, username);
// Add the "mail" entry
emailAddresses.Add(user.EmailAddress);
// Add the "proxyaddresses" entries.
PropertyCollection properties = ((DirectoryEntry)user.GetUnderlyingObject()).Properties;
foreach (object property in properties["proxyaddresses"])
{
emailAddresses.Add(property.ToString());
}
此示例還需要對「System.DirectoryServices.AccountManagement」的引用。 – Fueled 2011-10-03 07:48:35
+1這比接受的答案要好,因爲a)您不必離開本網站即可獲得幫助,並且b)它不具備所有神祕的LDAP查詢內容。 – 2011-12-09 23:19:17
我會尊重地不同意 - 雖然這增加了一些清晰度,但並未指出本文檔未指出的重要區別:「此[proxyAddress]屬性列出所有電子郵件地址類型,如SMTP,x.400等因此我們需要修改我們的代碼來檢查SMTP類型「。此外,也許微軟在這裏指責無效文檔,@Donut - 我仍然想知道爲什麼你做了以下事情: emailAddresses.Add(user.EmailAddress) 當Microsoft文檔定義此屬性爲「列表聯繫人的電子郵件地址「(多個地址?) – Jordan 2012-10-26 00:53:41