发送邮件代码如下:

 SendMail()
        {
            HttpWebRequest PUTRequest;
            WebResponse PUTResponse;
            HttpWebRequest MOVERequest;
            WebResponse MOVEResponse;
            CredentialCache MyCredentialCache;
            string strMailboxURI = "";
            
string strSubURI = "";
            
string strTempURI = "";
            
string strServer = "client";
            
string strPassword = "!QAZ1qaz";
            
string strDomain = "grouppower.local";
            
string strAlias = "Test";
            
string strTo = "dingfeng_wu@163.com";
            
string strSubject = "你好,邮件测试";
            
string strText = "邮件测试内容";
            
string strBody = "";
            
byte[] bytes = null;
            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 = \"GB2312\"" + "\n" +
                
"Content-Transfer-Encoding: 7bit" + "\n" +
                
"\n" + strText;
                
// 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.GetEncoding("GB2312").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.ReadKey();
        }

获取新邮件代码:

 

private void 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="没有找到您的邮箱";
            }

            
        }

相关文章: