/// <summary>
/// SendMail 的摘要说明。
/// </summary>
public class SendMail
{
public SendMail()
{
}
TcpClient smtpSrv;
NetworkStream netStrm;
string CRLF="/r/n";
/// <summary>
///
/// </summary>
/// <param name="userList">收件箱</param>
/// <param name="server">服务器</param>
/// <param name="user">(服务器上的)用户名</param>
/// <param name="pwd">密码</param>
/// <param name="send">发件箱</param>
/// <param name="subject">主题</param>
/// <param name="text">内容</param>
public string QunFa(string userList,string server,string user,string pwd,string send,string subject,string text)
{
try
{
string data;
smtpSrv=new TcpClient(server,25); //smtp服务器地址,如smtp.163.com
netStrm=smtpSrv.GetStream();
StreamReader rdStrm=new StreamReader(smtpSrv.GetStream());
this.WriteStream("EHLO Local");
this.WriteStream("AUTH LOGIN");
data=AuthStream(user);//user用户名,例如你在网易是的通行证名称是zhangsan,则此处就写zhangsan
this.WriteStream(data);
data=AuthStream(pwd); //pwd密码,与您上面的用户名对应的密码
this.WriteStream(data);
data="MAIL FROM:<"+send+">";//send发件箱,如zhangsan@163.com
this.WriteStream(data);;
data="RCPT TO:<"+userList+">";//userList为收件箱地址
this.WriteStream(data);
this.WriteStream("DATA");
data="Date:"+DateTime.Now;
this.WriteStream(data);
data="From:"+send;//send发件箱,如zhangsan@163.com
this.WriteStream(data);
data="TO:"+userList;
this.WriteStream(data);
data="SUBJECT:"+subject;//subject邮件的主题
this.WriteStream(data);
data="Reply-TO:"+send;//send发件箱,如zhangsan@163.com
this.WriteStream(data);
this.WriteStream("");
this.WriteStream(text);//text邮件内容
this.WriteStream(".");
this.WriteStream("QUIT");
netStrm.Close();
rdStrm.Close();
return "1";
}
catch(Exception er)
{
return er.ToString();
}
}
/// <summary>
/// 该方法通过连接向服务器输出字符串数据
/// </summary>
/// <param name="strCmd">待发送的字符串</param>
private void WriteStream(string strCmd)
{
strCmd+=CRLF; //CRLF表示结束符
byte[] bw=System.Text.Encoding.Default.GetBytes(strCmd); //将字符串转为字节数组
netStrm.Write(bw,0,bw.Length); //将字节数组写入网络连接
}
/// <summary>
/// 用于将普通字符串转换为等效的以64为基的字符串,即Base64编码形式
/// </summary>
/// <param name="strCmd">普通字符串</param>
/// <returns></returns>
private string AuthStream(string strCmd)
{
try
{
byte[] by=System.Text.Encoding.Default.GetBytes(strCmd);//将字符串转为字节数组
strCmd=Convert.ToBase64String(by);
}
catch(Exception err)
{
return err.ToString();
}
return strCmd;
}
}