Использование системы;
Использование System.Text;
Использование System.io;
Использование System.net;
Использование System.net.sockets;
Имена пространства Blood.com.classlib
{
/// <summary>
/// tcpclient 派生类 用来进行 smtp 服务器的连接工作
/// </summary>
Public Class SMTPClient: TCPClient
{
Public Bool Isconnected ()
{
вернуть активное;
}
public void sendcommandtoserver (строковая команда)
{
NetworkStream ns = this.getStream ();
Byte [] writebuffer;
writebuffer = новый байт [1024];
writebuffer = encoding.default.getbytes (command);
ns.write (writebuffer, 0, writebuffer.length);
возвращаться;
}
public String getServerResponse ()
{
int Streamize;
String returnValue =;
Byte [] readbuffer;
NetworkStream ns = this.getStream ();
readbuffer = новый байт [1024];
StreamSize = ns.read (readbuffer, 0, readbuffer.length);
if (streamzize == 0)
{
returnValue;
}
еще
{
returnValue = encoding.default.getString (readBuffer);
returnreturnValue;
}
}
Public Bool DoesstringContainsmtpCode (String S, String smtpCode)
{
return (s.indexof (smtpcode, 0,10) ==-1)? false: true;
}
} // 结束类
/// <summary>
/// 发送邮件类
/// </summary>
Общедоступный класс SMTPMAIL
{
/// <summary>
/// 错误反馈信息
/// </summary>
частная строка strerrmessage = null;
/// <summary>
/// SMTP 服务器反馈的信息
/// </summary>
частная строка Strresponse;
/// <summary>
/// 构造函数
/// </summary>
public smtpmail ()
{
strerrmessage =;
strresponse =;
}
/// <summary>
/// 取得错误反馈信息
/// </summary>
Общедоступная строковая ошибка
{
получать
{
вернуть Strerrmessage;
}
}
/// <summary>
/// 取得 SMTP 服务器反馈的信息
/// </summary>
public String ServerResponse
{
получать
{
вернуть стрипонс;
}
}
/// <summary>
/// 邮件发送优先级
/// </summary>
Общественные приоритеты
{
/// <summary>
/// 最高级别
/// </summary>
высокий = 1,
/// <summary>
/// 默认级别
/// </summary>
Нормальный = 3,
/// <summary>
/// 最低级别
/// </summary>
низкий = 5
}
public void sendmail (String smtphost, int port, string from, string displayfromName, string to, string displaytoname, приоритет приоритетов, Bool html, строка база, субъект строки, строковое сообщение)
{
пытаться
{
String StrresponseNumber;
smtpclient smtpcmail = new smtpclient ();
smtpcmail.connect (smtphost, port);
bool bolconnect = smtpcmail.isconnected ();
// 判断是否进行了连接
if (! Bolconnect)
{
strerrmessage = smtp 服务器连接失败 ...;
возвращаться;
}
// 读取反馈信息
strresponseNumber = smtpcmail.getServerResponse ();
if (smtpcmail.doesstringcontainsmtpcode (strresponseNumber, 220))
{
это.
}
еще
{
this.strerrmessage = 连接失败 + strresponseNumber;
возвращаться ;
}
string [] strsendbuffer = new String [6];
String [] strresponsecode = {220,250,251,354,221}; // Коды успеха с SMTP -сервера
String strdata =;
strdata = string.concat (helo, smtphost);
strdata = string.concat (strdata,/r/n);
strsendbuffer [0] = strdata;
strdata =;
strdata = string.concat (почта из:, < + из +>);
strdata = string.concat (strdata,/r/n);
strsendbuffer [1] = strdata;
strdata =;
strdata = string.concat (rcpt 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 + < + до +>);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, субъект :);
strdata = string.concat (strdata, субъект);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, mime-версия: 1.0);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, x-priority: + приоритет);
strdata = string.concat (strdata,/r/n);
strdata = string.concat (strdata, x-msmail-priority: + приоритет);
strdata = string.concat (strdata,/r/n);
if (html == true)
{
strdata = string.concat (strdata, content-type: text/html;);
}
еще
{
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-coding: text/html;);
}
еще
{
strdata = string.concat (strdata, content-transfer-coding: 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;
в то время как (я <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 += <br>;
перерыв;
}
еще
{
if (j == strresponsecode.length-1)
{
this.strerrmessage += strresponseNumber;
this.strerrmessage += strsendbuffer [i];
возвращаться;
}
}
}
i ++;
} // 结束循环
}
Catch (SocketException err)
{
this.strerrmessage + = err.message + + err.stacktrace;
}
Поймать (исключение E)
{
this.strerrmessage + = e.message + + e.stacktrace;
}
} // 结束邮件发送方法
} // 结束类
} // 结束 пространство имен