usando o sistema;
usando System.Text;
usando System.io;
usando System.net;
usando system.net.sockets;
namespace blood.com.classlib
{
/// <summary>
/// tcpclient 派生类 , 用来进行 smtp 服务器的连接工作
/// </summary>
Classe Pública SMTPCLIENT: TCPCLIENT
{
public bool isConnected ()
{
retornar ativo;
}
public void sendCommandtoserver (comando string)
{
Networkstream ns = this.getStream ();
byte [] writebuffer;
writebuffer = novo byte [1024];
writebuffer = coding.default.getbytes (comando);
ns.Write (WriteBuffer, 0, writebuffer.length);
retornar;
}
public string getServerResponse ()
{
int streamsize;
String returnValue =;
byte [] readbuffer;
Networkstream ns = this.getStream ();
readbuffer = novo byte [1024];
streamsize = NS.Read (readbuffer, 0, readbuffer.length);
if (streamsize == 0)
{
return retornValue;
}
outro
{
returnValue = coding.default.getString (readbuffer);
returnreturnValue;
}
}
public bool DoessTringContainsmtpCode (String S, String SmtpCode)
{
return (s.IndexOF (smtpCode, 0,10) ==-1)? Falso: true;
}
} // 结束类
/// <summary>
/// 发送邮件类
/// </summary>
Classe pública Smtpmail
{
/// <summary>
/// 错误反馈信息
/// </summary>
String privada strerrMessage = null;
/// <summary>
/// smtp 服务器反馈的信息
/// </summary>
string string strrponse;
/// <summary>
/// 构造函数
/// </summary>
Public Smtpmail ()
{
strerrMessage =;
strResponse =;
}
/// <summary>
/// 取得错误反馈信息
/// </summary>
public string errorMessage
{
pegar
{
retornar StrerrMessage;
}
}
/// <summary>
/// 取得 smtp 服务器反馈的信息
/// </summary>
Public String ServerResponse
{
pegar
{
retornar strResponse;
}
}
/// <summary>
/// 邮件发送优先级
/// </summary>
prioridades públicas de enum
{
/// <summary>
/// 最高级别
/// </summary>
alto = 1,
/// <summary>
/// 默认级别
/// </summary>
Normal = 3,
/// <summary>
/// 最低级别
/// </summary>
baixo = 5
}
public void sendmail (string smtphoSt, int porta, string de, string displayFromName, string para, string displaytoname, prioridade prioritária, bool html, base string, string swents, string mensagem)
{
tentar
{
string strPronsenBonse;
smtpClient smtpcmail = new smtpClient ();
smtpcmail.connect (smtpHost, porta);
bool bolconnect = smtpcmail.isconnected ();
// 判断是否进行了连接
if (! Bolconnect)
{
strerrMessage = smtp 服务器连接失败 ...;
retornar;
}
// 读取反馈信息
strResponsenumber = smtpcmail.getServerRestons ();
if (smtpcmail.doessTringContainsmtpCode (strRESPONSENBERMUME, 220))
{
this.strResponse += strResponsenumber;
}
outro
{
this.strerrMessage = 连接失败 + strPronsEnumber;
retornar ;
}
string [] strSendBuffer = new String [6];
String [] strRESPONSecode = {220.250.251.354.221}; // Códigos de sucesso do servidor SMTP
string strdata =;
strdata = string.concat (Helo, smtphoSt);
strdata = string.concat (strdata,/r/n);
strsendBuffer [0] = strdata;
strdata =;
strdata = string.concat (e -mail de :, < + de +>);
strdata = string.concat (strdata,/r/n);
StrsendBuffer [1] = strdata;
strdata =;
strdata = string.concat (rcpt para :, < + to +>);
strdata = string.concat (strdata,/r/n);
StrsendBuffer [2] = strdata;
strdata =;
strdata = string.concat (dados,/r/n);
StrsendBuffer [3] = strdata;
strdata =;
strdata = string.concat (de:, DisplayFromName + < + de +>);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, para :);
strdata = string.concat (strdata, displaytoname + < + to +>);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, sujeito :);
strdata = string.concat (strdata, sujeito);
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-prioridade: + prioridade);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, x-msmail-prioridade: + prioridade);
strdata = string.concat (strdata,/r/n);
if (html == true)
{
strdata = string.concat (strdata, tipo conteúdo: text/html;);
}
outro
{
strdata = string.concat (strdata, tipo conteúdo: text/planing;);
}
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, codificação de conteúdo-transfer: texto/html;);
}
outro
{
strdata = string.concat (strdata, codificação de transferência de conteúdo: text/plana;);
}
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, conteúdo-base: / + base + /);
strdata = string.concat (strdata,/r/n +/r/n);
strdata = string.concat (strdata, mensagem);
strdata = string.concat (strdata,/r/n./r/n);
StrsendBuffer [4] = strdata;
strdata =;
strdata = string.concat (strdata, desativado/r/n);
StrsendBuffer [5] = strdata;
int i = 0;
enquanto (i <strsendbuffer.length)
{
smtpcmail.sendCommandtoserver (strsendBuffer [i]);
strResponsenumber = smtpcmail.getServerRestons ();
for (int j = 0; j <strRESPONSecode.length; j ++)
{
if (smtpcmail.doessTringContainsmtpCode (strRESPONSENBERMUMBRO, STRRSPONSecode [j]))
{
this.strResponse += strResponsenumber;
this.strResponse += <br>;
quebrar;
}
outro
{
if (j == strSponsecode.length-1)
{
this.strerrMessage += strResponsenumber;
this.sterrMessage += strSendbuffer [i];
retornar;
}
}
}
i ++;
} // 结束循环
}
Catch (SockeTexception Err)
{
this.sterrMessage + = err.message + + err.stacktrace;
}
Catch (Exceção e)
{
this.sterrMessage + = e.message + + e.stacktrace;
}
} // 结束邮件发送方法
} // 结束类
} // 结束 namespace