2013-02-25 4 views
1

Я хочу получить имя пользователя и адрес электронной почты всех пользователей в конкретном списке рассылки из Outlook.Чтение имени пользователя и адреса электронной почты членов в списке рассылки Outlook с использованием C#

У меня есть код ниже.

   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 some one дают мне пример кода, который может извлекать имя пользователя и адрес электронной почты всех пользователей в списке рассылки ??

Любая помощь приветствуется.

Благодарим вас заранее!

ответ

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());