Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <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);
        }