2013-02-25 14 views
1

我想從outlook中獲取特定分發列表下的所有用戶的用戶名和電子郵件ID。使用C#閱讀outlook分發列表下成員的用戶名和emailid

我有以下代碼。

   DirectorySearcher search; 
       DirectoryEntry entry; 

       entry = new DirectoryEntry("LDAP://" + Domain); 
       search = new DirectorySearcher(entry); 
       search.Filter = "(&(objectClass=Distribution Lists) (CN=" + distList + "))"; 

       //search.Filter = "CN=" + distList; 
       //search.Filter = "cn=" + distList + ",ou=Distribution Lists,dc=bosch,dc=com"; 
       //search.Filter = "cn=" + distList + ",ou=Distribution Lists"; 
       int i = search.Filter.Length; 


       string str = "", str1 = ""; 
       foreach (SearchResult AdObj in search.FindAll()) 
       { 


        foreach (String objName in     AdObj.GetDirectoryEntry().Properties["member"]) 
        { 
         COnsole.writeline(objName); 
} 
} 

'FindAll'方法無法獲取任何東西。

我的代碼有什麼問題?

CAn有人給我示例代碼,它可以獲取用戶名和電子郵件ID在分發列表下的所有用戶?

任何幫助表示讚賞。

預先感謝您!

回答

0

嘗試此鏈接。

http://forums.asp.net/t/1224607.aspx?Displaying+Members+in+a+Distribution+List

它爲我工作。它也應該適合你。代碼如下:

 DirectorySearcher search; 
     DirectoryEntry entry;   

     entry = new DirectoryEntry(LDAPpath);//, Domainwithuser, password); 
     search = new DirectorySearcher(entry); 
     search.Filter = "CN=DistributionList1"; 
     int i = search.Filter.Length; 

     string str = "", str1 = ""; 
     foreach (SearchResult AdObj in search.FindAll()) 
     { 
      foreach (String objName in AdObj.GetDirectoryEntry().Properties["member"]) 
      { 
       str += Convert.ToString(objName) + "<Br>"; 
       int selIndex = objName.IndexOf("CN=") + 3; 
       int selEnd = objName.IndexOf(",OU") - 3; 
       str1 += objName.Substring(selIndex, selEnd).Replace("\\", "") + "<BR>"; 

       DirectorySearcher dsSearch = new DirectorySearcher(entry); 
       dsSearch.Filter = "CN=" + objName.Substring(selIndex, selEnd).Replace("\\", ""); 
       foreach (SearchResult rs in dsSearch.FindAll()) 
       { 
        str1 += "&lt;p align='right'><font face='calibri' color='#2266aa' size=2>" + Convert.ToString(rs.GetDirectoryEntry().Properties["mail"].Value) + "|" + Convert.ToString(rs.GetDirectoryEntry().Properties["displayName"].Value) + "|" + Convert.ToString(rs.GetDirectoryEntry().Properties["sAMAccountName"].Value) + "|" + Convert.ToString(rs.GetDirectoryEntry().Properties["department"].Value) + "|" + Convert.ToString(rs.GetDirectoryEntry().Properties["memberOf"].Value) + "&lt;/font></p>"; 
       } 
      } 
     } 
     Response.Write("&lt;BR>" + str + "&lt;Br>" + str1 + "&lt;BR>"); 

     MessageBox.Show(rs.GetDirectoryEntry().Properties["sAMAccountName"].Value.ToString() + " : " + rs.GetDirectoryEntry().Properties["mail"].Value.ToString());