/// <summary> /// Returns a user's email messages from their inbox /// </summary> /// <param name="UserName">User name</param> /// <param name="Password">Password</param> /// <param name="Directory">Directory</param> /// <param name="Server">Server using</param> /// <returns>a list of messages</returns> public static List<Utilities.Web.Email.Message> GetEmail(string UserName, string Password, string Directory, string Server) { List<Utilities.Web.Email.Message> ReturnArray = new List<Utilities.Web.Email.Message>(); string Uri = string.Format("http://{0}/exchange/{1}/inbox", Server, Directory); byte[] Contents = System.Text.Encoding.UTF8.GetBytes(string.Format( @"<?xml version=""1.0""?> <g:searchrequest xmlns:g=""DAV:""> <g:sql> SELECT ""urn:schemas:httpmail:subject"", ""urn:schemas:httpmail:to"", ""urn:schemas:httpmail:from"",""urn:schemas:httpmail:htmldescription"" FROM Scope('DEEP TRAVERSAL OF ""http://{0}/exchange/{1}/inbox""') WHERE ""DAV:contentclass"" = 'urn:content-classes:message' </g:sql> </g:searchrequest>", Server, Directory)); HttpWebRequest Request = HttpWebRequest.Create(Uri) as HttpWebRequest; System.Net.CredentialCache MyCredentialCache = new System.Net.CredentialCache(); if (!string.IsNullOrEmpty(UserName) && !string.IsNullOrEmpty(Password)) { MyCredentialCache.Add(new System.Uri(Uri), "NTLM", new System.Net.NetworkCredential(UserName, Password)); } else { MyCredentialCache.Add(new System.Uri(Uri), "Negotiate", (System.Net.NetworkCredential)CredentialCache.DefaultCredentials); } Request.Credentials = MyCredentialCache; Request.Method = "SEARCH"; Request.ContentLength = Contents.Length; Request.ContentType = "text/xml"; using (System.IO.Stream RequestStream = Request.GetRequestStream()) { RequestStream.Write(Contents, 0, Contents.Length); using (HttpWebResponse Response = Request.GetResponse() as HttpWebResponse) { using (System.IO.Stream ResponseStream = Response.GetResponseStream()) { XmlDocument Document = new XmlDocument(); Document.Load(ResponseStream); foreach (XmlElement Element in Document.GetElementsByTagName("a:prop")) { Utilities.Web.Email.Message TempMessage = new Utilities.Web.Email.Message(); if (Element["d:subject"] != null) { TempMessage.Subject = Element["d:subject"].InnerText; } if (Element["d:htmldescription"] != null) { TempMessage.Body = Element["d:htmldescription"].InnerText; } if (Element["d:to"] != null) { TempMessage.To = Element["d:to"].InnerText; } if (Element["d:from"] != null) { TempMessage.From = Element["d:from"].InnerText; } ReturnArray.Add(TempMessage); } } } } return ReturnArray; }
/// <summary> /// Returns a user's email messages from their inbox /// </summary> /// <param name="UserName">User name</param> /// <param name="Password">Password</param> /// <param name="Directory">Directory</param> /// <param name="Server">Server using</param> /// <returns>a list of messages</returns> public static List <Utilities.Web.Email.Message> GetEmail(string UserName, string Password, string Directory, string Server) { List <Utilities.Web.Email.Message> ReturnArray = new List <Utilities.Web.Email.Message>(); string Uri = string.Format("http://{0}/exchange/{1}/inbox", Server, Directory); byte[] Contents = System.Text.Encoding.UTF8.GetBytes(string.Format( @"<?xml version=""1.0""?> <g:searchrequest xmlns:g=""DAV:""> <g:sql> SELECT ""urn:schemas:httpmail:subject"", ""urn:schemas:httpmail:to"", ""urn:schemas:httpmail:from"",""urn:schemas:httpmail:htmldescription"" FROM Scope('DEEP TRAVERSAL OF ""http://{0}/exchange/{1}/inbox""') WHERE ""DAV:contentclass"" = 'urn:content-classes:message' </g:sql> </g:searchrequest>", Server, Directory)); HttpWebRequest Request = HttpWebRequest.Create(Uri) as HttpWebRequest; System.Net.CredentialCache MyCredentialCache = new System.Net.CredentialCache(); if (!string.IsNullOrEmpty(UserName) && !string.IsNullOrEmpty(Password)) { MyCredentialCache.Add(new System.Uri(Uri), "NTLM", new System.Net.NetworkCredential(UserName, Password)); } else { MyCredentialCache.Add(new System.Uri(Uri), "Negotiate", (System.Net.NetworkCredential)CredentialCache.DefaultCredentials); } Request.Credentials = MyCredentialCache; Request.Method = "SEARCH"; Request.ContentLength = Contents.Length; Request.ContentType = "text/xml"; using (System.IO.Stream RequestStream = Request.GetRequestStream()) { RequestStream.Write(Contents, 0, Contents.Length); using (HttpWebResponse Response = Request.GetResponse() as HttpWebResponse) { using (System.IO.Stream ResponseStream = Response.GetResponseStream()) { XmlDocument Document = new XmlDocument(); Document.Load(ResponseStream); foreach (XmlElement Element in Document.GetElementsByTagName("a:prop")) { Utilities.Web.Email.Message TempMessage = new Utilities.Web.Email.Message(); if (Element["d:subject"] != null) { TempMessage.Subject = Element["d:subject"].InnerText; } if (Element["d:htmldescription"] != null) { TempMessage.Body = Element["d:htmldescription"].InnerText; } if (Element["d:to"] != null) { TempMessage.To = Element["d:to"].InnerText; } if (Element["d:from"] != null) { TempMessage.From = Element["d:from"].InnerText; } ReturnArray.Add(TempMessage); } } } } return(ReturnArray); }