我在通過搜索其電子郵件地址來查找Active Directory中的用戶的代碼時遇到了一些問題。我嘗試過2種方法,但我有時會發現FindOne()方法在某些場合不會返回任何結果。如果我在Outlook中查看GAL中的用戶,我會看到列出的SMTP電子郵件地址。通過.NET的電子郵件地址搜索AD用戶的正確方法
我的最終目標是確認用戶是否存在於AD中。我只有電子郵件地址作爲搜索條件,所以沒有辦法使用名字或姓氏。
方法1:使用郵件屬性:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
方法2:代理地址屬性:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
我試圖改變電子郵件地址輸入的情況下,但它仍然沒有返回結果。區分大小寫是否存在問題?如果是這樣,解決它的最好方法是什麼?
我想我已經找到了問題。 DirectoryEntry.Path被限定爲特定的域。我更改了代碼以使用全局編錄並且搜索正在工作。我會盡快回復並更新。如果有人有任何要添加的東西,歡迎回答郵件與proxyAddresses。 – 2010-03-29 03:36:19