·首页 ·asp ·.net ·php ·JSP ·CGI ·数据库 ·网页设计 ·网管专栏 ·XML ·工具软件 ·办公软件 ·操作系统 ·程序设计 ·LINUX 
  当前位置: 普克>>计算机教程>>.net>>E-mail专题>>邮件发送类,支持HTML格式,支持优先
flash视频教学

photoshop专题

asp.net专题

office专题

邮件发送类,支持HTML格式,支持优先级设置。通过SOCKET类实现的。问题终于解决了。


E-mail专题 发表时间:2006-4-8 字体:  返回
using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

namespace Blood.Com.ClassLib
{         
    /// <summary>
    /// TcpClient派生类,用来进行SMTP服务器的连接工作
    /// </summary>
    public class SMTPClient : TcpClient
    {
        public bool isConnected()
        {
            return Active;
        }

        public void SendCommandToServer(string Command)
        {
            NetworkStream ns = this.GetStream() ;
            byte[]  WriteBuffer ;
            WriteBuffer = new byte[1024] ;
            WriteBuffer = Encoding.Default.GetBytes(Command) ;
            ns.Write(WriteBuffer,0,WriteBuffer.Length);
            return  ;
        }         
        public string GetServerResponse()
        {
            int StreamSize ;
            string ReturnValue = "" ;
            byte[]  ReadBuffer ;
            NetworkStream ns = this.GetStream() ;
            ReadBuffer = new byte[1024] ;
            StreamSize = ns.Read(ReadBuffer,0,ReadBuffer.Length);
            if (StreamSize==0)
            {
                return ReturnValue ;
            }
            else
            {
                ReturnValue = Encoding.Default.GetString(ReadBuffer);
                return  ReturnValue;
            }         
        }

        public bool DoesStringContainSMTPCode(string s,string SMTPCode)
        {
            return(s.IndexOf(SMTPCode,0,10)==-1)?false:true;
        }

    } //结束类

    /// <summary>
    /// 发送邮件类
    /// </summary>
    public class SMTPMail
    {
        /// <summary>
        /// 错误反馈信息
        /// </summary>
        private string strErrMessage = null;

        /// <summary>
        /// SMTP服务器反馈的信息
        /// </summary>
        private string strResponse;

        /// <summary>
        /// 构造函数
        /// </summary>
        public SMTPMail()
        {
            strErrMessage = "";
            strResponse = "";
        }

        /// <summary>
        /// 取得错误反馈信息
        /// </summary>
        public string ErrorMessage
        {
            get
            {
                return strErrMessage ;
            }
        }

        /// <summary>
        /// 取得SMTP服务器反馈的信息
        /// </summary>
        public string ServerResponse
        {
            get
            {
                return strResponse;
            }
        }

        /// <summary>
        /// 邮件发送优先级
        /// </summary>
        public enum Prioritys
        {
            /// <summary>
            /// 最高级别
            /// </summary>
            HIGH = 1,
            /// <summary>
            /// 默认级别
            /// </summary>
            NORMAL = 3,
            /// <summary>
            /// 最低级别
            /// </summary>
            LOW = 5
        }

        public void SendMail(string SmtpHost,int Port,string From,string DisplayFromName,string To,string DisplayToName,Prioritys Priority,bool Html,string Base,string Subject,string Message)
        {
            try
            {
                string strResponseNumber;
                SMTPClient smtpcMail = new SMTPClient();
                smtpcMail.Connect(SmtpHost,Port);
                bool bolConnect = smtpcMail.isConnected();
                
                //判断是否进行了连接
                if (!bolConnect)
                {
                    strErrMessage = "Smtp服务器连接失败...";
                    return;
                }
                
                //读取反馈信息
                strResponseNumber = smtpcMail.GetServerResponse();
                if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber,"220"))
                {
                    this.strResponse += strResponseNumber;
                }
                else
                {
                    this.strErrMessage = "连接失败" + strResponseNumber;
                    return ;
                }
                
                string[] strSendBuffer = new string[6];
                string[] strResponseCode = {"220","250","251","354","221"};   // success codes from SMTP server
                
                string strData = "";
                strData = string.Concat("HELO ",SmtpHost);
                strData = string.Concat(strData,"\r\n");
                strSendBuffer[0] = strData  ;
                
                strData = "";
                strData = string.Concat("MAIL FROM: ","<" + From + ">");
                strData = string.Concat(strData,"\r\n");
                strSendBuffer[1] = strData;
                
                strData = "";
                strData = string.Concat("RCPT TO: ","<" + To + ">");
                strData = string.Concat(strData,"\r\n");
                strSendBuffer[2] = strData;
                
                strData = "" ;
                strData = string.Concat("DATA","\r\n");
                strSendBuffer[3] = strData  ;
                
                strData = "" ;
                strData = string.Concat("From: ",DisplayFromName + "<" + From + ">");
                strData = string.Concat(strData,"\r\n" );
                strData = string.Concat(strData,"To: " );
                strData = string.Concat(strData,DisplayToName + "<" + To + ">");
                strData = string.Concat(strData,"\r\n" );
                strData = string.Concat(strData,"Subject: " );
                strData = string.Concat(strData,Subject);
                strData = string.Concat(strData,"\r\n");
                strData = string.Concat(strData,"MIME-Version: 1.0" );
                strData = string.Concat(strData,"\r\n");
                strData = string.Concat(strData,"X-Priority: " + Priority);
                strData = string.Concat(strData,"\r\n");
                strData = string.Concat(strData,"X-MSMail-Priority: " + Priority);
                strData = string.Concat(strData,"\r\n");
                if(Html == true)
                {
                    strData = string.Concat(strData,"Content-Type: text/html;" );
                }
                else
                {
                    strData = string.Concat(strData,"Content-Type: text/plain;" );
                }
                strData = string.Concat(strData,"\r\n");
                strData = string.Concat(strData,"charset=\"iso-8859-1\"" );
                strData = string.Concat(strData,"\r\n");
                if(Html == true)
                {
                    strData = string.Concat(strData,"Content-Transfer-Encoding: text/html;" );
                }
                else
                {
                    strData = string.Concat(strData,"Content-Transfer-Encoding: text/plain;" );
                }
                strData = string.Concat(strData,"\r\n");
                strData = string.Concat(strData,"Content-Base: \"" + Base + "\"" );
                strData = string.Concat(strData,"\r\n" + "\r\n");
                
                strData = string.Concat(strData,Message);
                strData = string.Concat(strData,"\r\n.\r\n");
                strSendBuffer[4] = strData;
                
                strData = "" ;
                strData = string.Concat(strData,"QUIT\r\n");
                strSendBuffer[5] = strData;
                
                int i = 0 ;
                
                while(i < strSendBuffer.Length)
                {
                    smtpcMail.SendCommandToServer(strSendBuffer[i]);
                    strResponseNumber = smtpcMail.GetServerResponse();
                    
                    for(int j=0;j<strResponseCode.Length;j++)
                    {
                        if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber,strResponseCode[j]))
                        {
                            this.strResponse += strResponseNumber;
                            this.strResponse += "<br>";
                            break;
                        }
                        else
                        {
                            if(j==strResponseCode.Length-1)
                            {
                                this.strErrMessage += strResponseNumber;
                                this.strErrMessage += strSendBuffer[i];
                                return;
                            }
                        }
                    }
                    
                    i++ ;
                } // 结束循环
            }
            catch(SocketException err)
            {
                this.strErrMessage += err.Message + " " + err.StackTrace;
            }
            catch(Exception e)
            {
                this.strErrMessage += e.Message + " " + e.StackTrace;
            }
        } //结束邮件发送方法
         
    } // 结束类

} // 结束Namespace


上一篇:邮件发送测试页面。前台页面
下一篇:更新后的邮件发送类,支持SMTP认证功能。暂时还没有加附件的功能和抄送、暗送。

普克创业投资网刊载此文不代表同意其说法或描述,仅为提供更多信息。
在百度中搜索邮件发送类,支持HTML格式,支持优先级设置。通过SOCKET类实现的。问题终于解决了。的相关内容]   [在狗狗中搜索邮件发送类,支持HTML格式,支持优先级设置。通过SOCKET类实现的。问题终于解决了。的相关内容]
Copyright @ 2006 PUPK.COM 普克创业投资网 版权所有
 建议使用1024*768以达到最好的浏览效果