1: public static System.Web.UI.WebControls.ListItemCollection GetContacts(string UserName,string Password,string Directory)
2: {
3: System.Web.UI.WebControls.ListItemCollection ReturnArray = new System.Web.UI.WebControls.ListItemCollection();
4: string server = "http:/ /ExchangeServer";
5: NetworkCredential credentials = new NetworkCredential(UserName, Password);
6: string uri = string.Format("{0}/exchange/{1}", server, credentials.UserName);
7: byte[] contents = System.Text.Encoding.UTF8.GetBytes(string.Format(
8:
9: @"<?xml version=""1.0""?>
10:
11: <g:searchrequest xmlns:g=""DAV:"">
12:
13: <g:sql>
14:
15: SELECT
16:
17: ""urn:schemas:contacts:givenName"", ""urn:schemas:contacts:sn"",
18:
19: ""urn:schemas:contacts:email1""
20:
21: FROM
22:
23: Scope('SHALLOW TRAVERSAL OF ""{0}/exchange/{1}/contacts""')
24:
25: </g:sql>
26:
27: </g:searchrequest>",
28:
29: server, credentials.UserName));
30:
31:
32:
33: HttpWebRequest request = HttpWebRequest.Create(uri) as HttpWebRequest;
34: request.Credentials = credentials;
35: request.Method = "SEARCH";
36: request.ContentLength = contents.Length;
37: request.ContentType = "text/xml";
38:
39: using (System.IO.Stream requestStream = request.GetRequestStream())
40: requestStream.Write(contents, 0, contents.Length);
41:
42:
43:
44: using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
45: using (System.IO.Stream responseStream = response.GetResponseStream())
46: {
47: XmlDocument document = new XmlDocument();
48: document.Load(responseStream);
49: foreach (XmlElement element in document.GetElementsByTagName("a:prop"))
50: {
51: if (element["d:sn"] != null && element["d:givenName"] != null && element["d:email1"] != null)
52: {
53: System.Web.UI.WebControls.ListItem TempItem = new System.Web.UI.WebControls.ListItem();
54: TempItem.Text = element["d:sn"].InnerText+", "+element["d:givenName"].InnerText;
55: TempItem.Value = element["d:email1"].InnerText;
56: ReturnArray.Add(TempItem);
57: }
58: }
59: }
60: return ReturnArray;
61: }