当前位置:首页 > 网络编程 > WEB编程 > ASP.net > 邮件发送类,支持HTML格式,支持优先级设置

邮件发送类,支持HTML格式,支持优先级设置

点击次数:20 次 发布日期:2008-11-26 23:31:22 作者:源代码网
源代码网推荐 邮件发送类,支持HTML格式,支持优先级设置。通过SOCKET类实现的
源代码网推荐 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,"rn");
源代码网推荐                 strSendBuffer[0] = strData  ;
源代码网推荐                
源代码网推荐                 strData = "";
源代码网推荐                 strData = string.Concat("MAIL FROM: ","<" + From + ">");
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 strSendBuffer[1] = strData;
源代码网推荐                
源代码网推荐                 strData = "";
源代码网推荐                 strData = string.Concat("RCPT TO: ","<" + To + ">");
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 strSendBuffer[2] = strData;
源代码网推荐                
源代码网推荐                 strData = "" ;
源代码网推荐                 strData = string.Concat("DATA","rn");
源代码网推荐                 strSendBuffer[3] = strData  ;
源代码网推荐                
源代码网推荐                 strData = "" ;
源代码网推荐                 strData = string.Concat("From: ",DisplayFromName + "<" + From + ">");
源代码网推荐                 strData = string.Concat(strData,"rn" );
源代码网推荐                 strData = string.Concat(strData,"To: " );
源代码网推荐                 strData = string.Concat(strData,DisplayToName + "<" + To + ">");
源代码网推荐                 strData = string.Concat(strData,"rn" );
源代码网推荐                 strData = string.Concat(strData,"Subject: " );
源代码网推荐                 strData = string.Concat(strData,Subject);
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 strData = string.Concat(strData,"MIME-Version: 1.0" );
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 strData = string.Concat(strData,"X-Priority: " + Priority);
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 strData = string.Concat(strData,"X-MSMail-Priority: " + Priority);
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 if(Html == true)
源代码网推荐                 {
源代码网推荐                     strData = string.Concat(strData,"Content-Type: text/html;" );
源代码网推荐                 }
源代码网推荐                 else
源代码网推荐                 {
源代码网推荐                     strData = string.Concat(strData,"Content-Type: text/plain;" );
源代码网推荐                 }
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 strData = string.Concat(strData,"charset="iso-8859-1"" );
源代码网推荐                 strData = string.Concat(strData,"rn");
源代码网推荐                 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,"rn");
源代码网推荐                 strData = string.Concat(strData,"Content-Base: "" + Base + """ );
源代码网推荐                 strData = string.Concat(strData,"rn" + "rn");
源代码网推荐                
源代码网推荐                 strData = string.Concat(strData,Message);
源代码网推荐                 strData = string.Concat(strData,"rn.rn");
源代码网推荐                 strSendBuffer[4] = strData;
源代码网推荐                
源代码网推荐                 strData = "" ;
源代码网推荐                 strData = string.Concat(strData,"QUITrn");
源代码网推荐                 strSendBuffer[5] = strData;
源代码网推荐                
源代码网推荐                 int i = 0 ;
源代码网推荐                
源代码网推荐                 while(i < strSendBuffer.Length)
源代码网推荐                 {
源代码网推荐                     smtpcMail.SendCommandToServer(strSendBuffer);
源代码网推荐                     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;
源代码网推荐                                 return;
源代码网推荐                             }
源代码网推荐                         }
源代码网推荐                     }
源代码网推荐                     
源代码网推荐                     i++ ;
源代码网推荐                 } // 结束循环
源代码网推荐             }
源代码网推荐             catch(SocketException err)
源代码网推荐             {
源代码网推荐                 this.strErrMessage += err.Message + " " + err.StackTrace;
源代码网推荐             }
源代码网推荐             catch(Exception e)
源代码网推荐             {
源代码网推荐                 this.strErrMessage += e.Message + " " + e.StackTrace;
源代码网推荐             }
源代码网推荐         } //结束邮件发送方法
源代码网推荐          
源代码网推荐     } // 结束类
源代码网推荐
源代码网推荐 } // 结束Namespace

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华