设为首页 收藏本站
查看: 933|回复: 0

[经验分享] 调用Exchange收发邮件(无组件收发)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-11 07:15:30 | 显示全部楼层 |阅读模式
  发送邮件代码如下:

DSC0000.gif DSC0001.gif Code
        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 = "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.InnerText=="收件箱")
                        this.LMail.Text="您有"+SizeNodes.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="没有找到您的邮箱";
            }

            
        }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-112051-1-1.html 上篇帖子: Exchange server 2007安装篇 下篇帖子: c#创建exchange邮箱问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表