menggunakan sistem;
menggunakan System.Text;
menggunakan system.io;
menggunakan System.net;
menggunakan System.net.sockets;
namespace Blood.com.classlib
{
/// <summary>
/// tcpClient 派生类 , 用来进行 smtp 服务器的连接工作
/// </summary>
SMTPClient kelas publik: TCPClient
{
bool publik isconnected ()
{
kembali aktif;
}
public void sendCommandToServer (perintah string)
{
networkstream ns = this.getStream ();
byte [] writeBuffer;
writeBuffer = byte baru [1024];
writeBuffer = encoding.default.getbytes (perintah);
ns.write (writeBuffer, 0, writeBuffer.length);
kembali;
}
string publik getServerResponse ()
{
int streamsize;
String returnValue =;
byte [] readBuffer;
networkstream ns = this.getStream ();
readBuffer = byte baru [1024];
streamsize = ns.read (readBuffer, 0, readBuffer.length);
if (streamsize == 0)
{
Return ReturnValue;
}
kalau tidak
{
returnValue = encoding.default.getString (readBuffer);
ReturnReturnValue;
}
}
public bool doesstringcontainsmtpcode (string s, string smtpcode)
{
return (s.indexof (smtpcode, 0,10) ==-1)? Salah: true;
}
} // 结束类
/// <summary>
/// 发送邮件类
/// </summary>
SMTPMail kelas publik
{
/// <summary>
/// 错误反馈信息
/// </summary>
Private String Strerrmessage = null;
/// <summary>
/// smtp 服务器反馈的信息
/// </summary>
String Private Strresponse;
/// <summary>
/// 构造函数
/// </summary>
smtpmail publik ()
{
strerrmessage =;
strresponse =;
}
/// <summary>
/// 取得错误反馈信息
/// </summary>
Publik string errorMessage
{
mendapatkan
{
mengembalikan strerrmessage;
}
}
/// <summary>
/// 取得 smtp 服务器反馈的信息
/// </summary>
Public String ServerResponse
{
mendapatkan
{
Return Strresponse;
}
}
/// <summary>
/// 邮件发送优先级
/// </summary>
Prioritas Enum Publik
{
/// <summary>
/// 最高级别
/// </summary>
tinggi = 1,
/// <summary>
/// 默认级别
/// </summary>
normal = 3,
/// <summary>
/// 最低级别
/// </summary>
rendah = 5
}
public void sendmail (string smtphost, int port, string dari, string displayFromName, string to, string displaytoname, prioritas prioritas, bool html, basis string, subjek string, pesan string)
{
mencoba
{
string strresponsEnboMS;
smtpClient smtpcmail = smtpclient baru ();
smtpcmail.connect (smtphost, port);
bool bolconnect = smtpcmail.isconnected ();
// 判断是否进行了连接
if (! bolconnect)
{
strerrmessage = smtp 服务器连接失败 ...;
kembali;
}
// 读取反馈信息
strResponsEnumber = smtpcmail.getServerResponse ();
if (smtpcmail.doesstringcontainsmtpcode (strresponsEnber, 220)))
{
this.strResponse += strResponsEnumber;
}
kalau tidak
{
this.strerMessage = 连接失败 + strResponsEnumber;
kembali ;
}
string [] strsendBuffer = string baru [6];
String [] strResponsecode = {220.250.251.354.221}; // Kode sukses dari server SMTP
string strdata =;
strdata = string.concat (helo, smtphost);
strdata = string.concat (strdata,/r/n);
strsendbuffer [0] = strdata;
strdata =;
strdata = string.concat (surat dari :, < + from +>);
strdata = string.concat (strdata,/r/n);
StrsendBuffer [1] = strdata;
strdata =;
strdata = string.concat (rcpt ke :, < + to +>);
strdata = string.concat (strdata,/r/n);
Strsendbuffer [2] = strdata;
strdata =;
strdata = string.concat (data,/r/n);
Strsendbuffer [3] = strdata;
strdata =;
strdata = string.concat (dari:, displayFromName + < + from +>);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, ke :);
strdata = string.concat (strdata, displaytoname + < + to +>);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, subjek :);
strdata = string.concat (strdata, subjek);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, mime-versi: 1.0);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, x-prioritas: + prioritas);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, x-msmail-prioritas: + prioritas);
strdata = string.concat (strdata,/r/n);
if (html == true)
{
strdata = string.concat (strdata, tipe konten: teks/html;);
}
kalau tidak
{
strdata = string.concat (strdata, tipe konten: teks/polos;);
}
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, konten-transfer-encoding: teks/html;);
}
kalau tidak
{
strdata = string.concat (strdata, konten-transfer-encoding: teks/polos;);
}
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, basis konten: / + basis + /);
strdata = string.concat (strdata,/r/n +/r/n);
strdata = string.concat (strdata, pesan);
strdata = string.concat (strdata,/r/n./r/n);
Strsendbuffer [4] = strdata;
strdata =;
strdata = string.concat (strdata, berhenti/r/n);
Strsendbuffer [5] = strdata;
int i = 0;
while (i <strsendbuffer.length)
{
smtpcmail.sendCommandToServer (StrsendBuffer [i]);
strResponsEnumber = smtpcmail.getServerResponse ();
untuk (int j = 0; j <strresponsecode.length; j ++)
{
if (smtpcmail.doesstringcontainsmtpcode (strresponsEnboM, strresponsecode [j])))
{
this.strResponse += strResponsEnumber;
this.strResponse += <br>;
merusak;
}
kalau tidak
{
if (j == strresponsecode.length-1)
{
this.strerMessage += strResponsEnumber;
this.strerMessage += strsendBuffer [i];
kembali;
}
}
}
i ++;
} // 结束循环
}
Catch (SocketException err)
{
this.strerMessage + = err.message + + err.stacktrace;
}
Tangkap (pengecualian e)
{
this.strerMessage + = e.message + + e.stacktrace;
}
} // 结束邮件发送方法
} // 结束类
} // 结束 namespace