using System; using System.Net; using System.IO; using System.Text; namespace ExchangeSDK.Snippets.CSharp { class SendingMessageWebDAV { [STAThread] staticvoid Main(string[] args) { System.Net.HttpWebRequest PUTRequest; System.Net.WebResponse PUTResponse; System.Net.HttpWebRequest MOVERequest; System.Net.WebResponse MOVEResponse; System.Net.CredentialCache MyCredentialCache; string strMailboxURI =""; string strSubURI =""; string strTempURI =""; string strServer ="191.0.0.111"; string strPassword ="afineday"; string strDomain ="oa.lgyw"; string strAlias ="administrator"; string strTo ="wangxling@netease.com"; string strSubject ="明天工作内容"; string strText ="我应该怎么做?."; string strBody =""; byte[] bytes =null; System.IO.Stream PUTRequestStream =null; try { // Build the mailbox URI. strMailboxURI ="http://"+ strServer +"/exchange/"+ strAlias; // Build the submission URI for the message. If Secure // Sockets Layer (SSL) is set up on the server, use // "https://" instead of "http://". strSubURI ="http://"+ strServer +"/exchange/"+ strAlias +"/##DavMailSubmissionURI##/"; // Build the temporary URI for the message. If SSL is set // up on the server, use "https://" instead of "http://". strTempURI ="http://"+ strServer +"/exchange/"+ strAlias +"/草稿/"+ strSubject +".eml"; // Construct the RFC 822 formatted body of the PUT request. // Note: If the From: header is included here, // the MOVE method request will return a // 403 (Forbidden) status. The From address will // be generated by the Exchange server. strBody ="To: "+ strTo +"\n"+ "Subject: "+ strSubject +"\n"+ "Date: "+ System.DateTime.Now + "X-Mailer: test mailer"+"\n"+ "MIME-Version: 1.0"+"\n"+ "Content-Type: text/plain;"+"\n"+ "Charset = \"iso-8859-1\""+"\n"+ "Content-Transfer-Encoding:7bit"+"\n"+ "\n"+ strText; //iso-8859-1 //quotedprintable7bit // Create a new CredentialCache object and fill it with the network // credentials required to access the server. MyCredentialCache =new System.Net.CredentialCache(); MyCredentialCache.Add( new System.Uri(strMailboxURI), "NTLM", new System.Net.NetworkCredential(strAlias, strPassword, strDomain) ); // Create the HttpWebRequest object. PUTRequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strTempURI); // Add the network credentials to the request. PUTRequest.Credentials = MyCredentialCache; // Specify the PUT method. PUTRequest.Method ="PUT"; // Encode the body using UTF-8. bytes = Encoding.Default.GetBytes((string)strBody); // Set the content header length. This must be // done before writing data to the request stream. PUTRequest.ContentLength = bytes.Length; // Get a reference to the request stream. PUTRequestStream = PUTRequest.GetRequestStream(); // Write the message body to the request stream. PUTRequestStream.Write(bytes, 0, bytes.Length); // Close the Stream object to release the connection // for further use. PUTRequestStream.Close(); // Set the Content-Type header to the RFC 822 message format. PUTRequest.ContentType ="message/rfc822"; // PUT the message in the Drafts folder of the // sender's mailbox. PUTResponse = (System.Net.HttpWebResponse)PUTRequest.GetResponse(); // Create the HttpWebRequest object. MOVERequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strTempURI); // Add the network credentials to the request. MOVERequest.Credentials = MyCredentialCache; // Specify the MOVE method. MOVERequest.Method ="MOVE"; // Set the Destination header to the // mail submission URI. MOVERequest.Headers.Add("Destination", strSubURI); // Send the message by moving it from the Drafts folder of the // sender's mailbox to the mail submission URI. MOVEResponse = (System.Net.HttpWebResponse)MOVERequest.GetResponse(); Console.WriteLine("Message successfully sent."); // Clean up. PUTResponse.Close(); MOVEResponse.Close(); } catch(Exception ex) { // Catch any exceptions. Any error codes from the PUT // or MOVE method requests on the server will be caught // here, also. Console.WriteLine(ex.Message); Console.ReadLine(); } } } }
privatevoid GetUnReadMailCount() { System.Net.HttpWebRequest Request; System.Net.WebResponse Response; System.Net.CredentialCache MyCredentialCache; string strRootURI ="http://191.0.0.111/exchange/administrator"; string strUserName ="administrator"; string strPassword ="afineday"; string strDomain ="oa.lgyw"; string strQuery =""; byte[] bytes =null; System.IO.Stream RequestStream =null; System.IO.Stream ResponseStream =null; XmlDocument ResponseXmlDoc =null; XmlNodeList HrefNodes=null; XmlNodeList SizeNodes=null; try { // Build the SQL query. strQuery ="<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >" +"<D:sql>SELECT \"DAV:displayname\",\"urn:schemas:httpmail:unreadcount\" FROM \"" + strRootURI + "\"" // +"where \"DAV:contentclass\"=\"urn:schemas:httpmail:read \"" // + "WHERE \"DAV:ishidden\" = false AND \"DAV:isfolder\" = false" +"</D:sql></D:searchrequest>"; // Create a new CredentialCache object and fill it with the network // credentials required to access the server. MyCredentialCache =new System.Net.CredentialCache(); MyCredentialCache.Add( new System.Uri(strRootURI), "NTLM", new System.Net.NetworkCredential(strUserName, strPassword, strDomain) ); // Create the HttpWebRequest object. Request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strRootURI); // Add the network credentials to the request. Request.Credentials = MyCredentialCache; // Specify the method. Request.Method ="SEARCH"; // Encode the body using UTF-8. bytes = Encoding.UTF8.GetBytes((string)strQuery); // Set the content header length. This must be // done before writing data to the request stream. Request.ContentLength = bytes.Length; // Get a reference to the request stream. RequestStream = Request.GetRequestStream(); // Write the SQL query to the request stream. RequestStream.Write(bytes, 0, bytes.Length); // Close the Stream object to release the connection // for further use. RequestStream.Close(); // Set the content type header. Request.ContentType ="text/xml"; // Send the SEARCH method request and get the // response from the server. Response = (HttpWebResponse)Request.GetResponse(); // Get the XML response stream. ResponseStream = Response.GetResponseStream(); // Create the XmlDocument object from the XML response stream. ResponseXmlDoc =new XmlDocument(); ResponseXmlDoc.Load(ResponseStream); HrefNodes = ResponseXmlDoc.GetElementsByTagName("a:displayname"); SizeNodes = ResponseXmlDoc.GetElementsByTagName("d:unreadcount"); for(int i=0;i<HrefNodes.Count;i++) { if(HrefNodes[i].InnerText=="收件箱") this.LMail.Text="您有"+SizeNodes[i].InnerText+"封新邮件!"; } ResponseStream.Close(); Response.Close(); } catch(Exception) { // Catch any exceptions. Any error codes from the SEARCH // method request on the server will be caught here, also. this.LMail.Text="没有找到您的邮箱"; } }
posted on
2005-08-22 09:51风渐寒pro
阅读(1416)
评论(3)
编辑收藏举报