请问在c#.net的Web程序中如何调用Exchange发送邮件呀?有没有示例源码?

解决方案 »

  1.   

    http://www.cnblogs.com/wudingfeng/archive/2008/09/25/1298522.html
      

  2.   

    弄错了
    http://www.cnblogs.com/wudingfeng/archive/2008/09/25/1298522.html
      

  3.   

      public static void 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 = "[email protected]";
                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();
            }