邮件发送类,支持HTML格式,支持优先级设置-.Net技术-3P代码网
繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> Asp.Net开发 >> 邮件发送类,支持HTML格式,支持优先级设置

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

2007-04-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:邮件发送类,支持HTML格式,支持优先级设置。通过SOCKET类实现的 using System; using System.Text; using System.IO; using System.Net; using System.Net.Sockets; namespace Blood.Com.ClassLib { /// /// T...

邮件发送类,支持HTML格式,支持优先级设置。通过SOCKET类实现的

using System;

using System.Text;

using System.IO;

using System.Net;

using System.Net.Sockets;

namespace Blood.Com.ClassLib

{

///

/// TcpClient派生类,用来进行SMTP服务器的连接工作

///

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;

}

} //结束类

///

/// 发送邮件类

///

public class SMTPMail

{

///

/// 错误反馈信息

///

private string strErrMessage = null;

///

/// SMTP服务器反馈的信息

///

private string strResponse;

///

/// 构造函数

///

public SMTPMail()

{

strErrMessage = "";

strResponse = "";

}

///

/// 取得错误反馈信息

///

public string ErrorMessage

{

get

{

return strErrMessage ;

}

}

///

/// 取得SMTP服务器反馈的信息

///

public string ServerResponse

{

get

{

return strResponse;

}

}

///

/// 邮件发送优先级

///

public enum Prioritys

{

///

/// 最高级别

///

HIGH = 1,

///

/// 默认级别

///

NORMAL = 3,

///

/// 最低级别

///

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

{

if (smtpcMail.DoesStringContainSMTPCode(strResponseNumber,strResponseCode[j]))

{

this.strResponse += strResponseNumber;

this.strResponse += "
";

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

责任编辑:admin
相关文章