WEB开发网
开发学院软件开发C++ 发布源码:高效的Esmtp,带验证,用Socket编写 阅读

发布源码:高效的Esmtp,带验证,用Socket编写

 2008-03-08 12:55:49 来源:WEB开发网   
核心提示:using System;using System.Net;using System.Net.Sockets;using System.Collections;using System.Configuration;using System.Text;using System.xml;using System.IO;us
using System;
using System.Net;
using System.Net.Sockets;
using System.Collections;
using System.Configuration;
using System.Text;
using System.xml;
using System.IO;
using System.Web;
using System.Web.Mail;namespace mail
{
 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 public class mSendMail
 {
 PRivate TcpClient tcpClt;
 private NetworkStream networkStm;
 private Hashtable rightCodeHT = new Hashtable();
 private string smtpServerName;
 private int smtpServerPort;
 private string userName;
 private string passWord;
 private string to;
 private string from;
 private string fromName;
 private string charset;
 private string recipientName;
 private string subject;
 private string body;
 private string priority;
    
 static string Send_Method;
 
 public mSendMail()
 {
 
 } public mSendMail(string strToName,string strTo,string strBody)
 {
  to = strTo;
  recipientName = strToName;
  body = strBody;
  smtpCodeAdd();
 }
 public  mSendMail(string strToName,string strTo, string strSubject, string strBody)
 {
  to = strTo;
  recipientName = strToName;
  subject = strSubject;
  body = strBody;
  smtpCodeAdd();
 }
 public  mSendMail(string strToName,string strTo,string strFromName,string strFrom, string strSubject, string strBody)
 {
  to = strTo;
  recipientName = strToName;
  from = strFrom;
  fromName = strFromName;
  subject = strSubject;
  body = strBody;
  smtpCodeAdd();
 }
 private bool initialize()
 {
  try
  {
  if(Send_Method=="1")
  {
   smtpServerName = ConfigurationSettings.AppSettings["smtpServerName"];
   smtpServerPort = Convert.ToInt32(ConfigurationSettings.AppSettings["smtpServerPort"]);
   userName = ConfigurationSettings.AppSettings["userName"];
   password = ConfigurationSettings.AppSettings["password"];
   //from = ConfigurationSettings.AppSettings["from"];
   //fromName = ConfigurationSettings.AppSettings["fromName"];
   charset = ConfigurationSettings.AppSettings["charset"];
  }
  else
  {
   smtpServerName ="";//your smtp server
   smtpServerPort =25;
   userName ="";//your name
   password ="";//your pass
   charset ="GB2312";
   //from = ConfigurationSettings.AppSettings["from"];
   //fromName = ConfigurationSettings.AppSettings["fromName"];
  }
  
  
  }
  catch
  {
  return false;
  }
  priority = "Normal";
  //subject = "//";
  //smtpCodeAdd();
  return true;
 } private string Base64Encode(string str)
 {
  byte[] barray;
  barray=Encoding.Default.GetBytes(str);
  return Convert.ToBase64String(barray);
 } private void smtpCodeAdd()
 {
  rightCodeHT.Add("220","");
  rightCodeHT.Add("250","");
  rightCodeHT.Add("251","");
  rightCodeHT.Add("354","");
  rightCodeHT.Add("221","");
  rightCodeHT.Add("334","");
  rightCodeHT.Add("235","");
 } private bool sendCommand(string str)
 {
  byte[] writeBuffer;
  writeBuffer = Encoding.Default.GetBytes(str);
  try
  {
  networkStm.Write(writeBuffer, 0, writeBuffer.Length);
  }
  catch
  {
  return false;
  }
  return true;
 } private bool isRight()
 {
  int streamSize;
  byte[] readBuffer = new byte[1024];
  string returnValue = "";
  try
  {
  streamSize = networkStm.Read(readBuffer, 0, readBuffer.Length);
  }
  catch
  {
  return false;
  }
  if (streamSize != 0)
  returnValue = Encoding.Default.GetString(readBuffer, 0, streamSize);
  if(rightCodeHT[returnValue.Substring(0,3)] == null)
  return false;
  return true;
 } public bool sendMail()
 {
  if (!initialize())
  return false;
  try
  {
  tcpClt = new TcpClient(smtpServerName, smtpServerPort);
  }
  catch
  {
  return false;
  }
  networkStm = tcpClt.GetStream();
  if (!isRight())
  return false;
  string[] sendBuffer;
  string enter = "\r\n";  sendBuffer = new String[9];
  sendBuffer[0] = "EHLO " + smtpServerName + enter;
  sendBuffer[1] = "AUTH LOGIN" + enter;
  sendBuffer[2] = Base64Encode(userName) + enter;
  sendBuffer[3] = Base64Encode(password) + enter;
  sendBuffer[4] = "MAIL FROM:<" + from + ">" + enter;
  sendBuffer[5] = "RCPT TO:<" + to +">" + enter;
  sendBuffer[6] = "DATA" + enter;
  sendBuffer[7] = "From:" + fromName + "<" + from +">" + enter;
  sendBuffer[7] += "To:=?" + charset.ToUpper() + "?B?"
  + Base64Encode(recipientName) + "?=" + "<" + to + ">" + enter;
  sendBuffer[7] += "Subject:" + "=?" + charset.ToUpper() + "?B?"
  + Base64Encode(subject) + "?=" + enter;
  sendBuffer[7] += "X-Priority:" + priority + enter;
  sendBuffer[7] += "X-MSMail-Priority:" + priority + enter;
  sendBuffer[7] += "Importance:" + priority + enter;
  sendBuffer[7] += "X-Mailer: Huolx.Pubclass" + enter;
  sendBuffer[7] += "MIME-Version: 1.0" + enter;
  sendBuffer[7] += "Content-Type: multipart/mixed;" + enter;
  sendBuffer[7] += "  boundary=\"----=_NextPart_000_00D6_01C29593.AAB31770\"" + enter;
  sendBuffer[7] += "------=_NextPart_000_00D6_01C29593.AAB31770" + enter;
  sendBuffer[7] += "Content-Type: text/Html;" + enter;
  sendBuffer[7] += "  charset=\"" + charset.ToLower() + "\"" + enter;
  sendBuffer[7] += "Content-Transfer-Encoding: base64" + enter + enter;
  sendBuffer[7] += Base64Encode(body) + enter;
  sendBuffer[7] += "------=_NextPart_000_00D6_01C29593.AAB31770--" + enter + enter;
  sendBuffer[7] += enter + "." + enter;
  sendBuffer[8] = "QUIT" + enter;  int i;  for (i=0;i<sendBuffer.Length;i++)
  {
  if (!sendCommand(sendBuffer[i]))
   return false;
  if (!isRight())
   return false;
  }
  tcpClt.Close();
  networkStm.Close();  return true;
 }
 public int Send_Email(string From, string To,string FromName,string ToName,string Subject,string Body)
 {
    int IsSUCcess = 0;
  string s1=To;
  int ix;
  int iy;
  int iz;
  char split;
  split=',';
  string[] MailAddress;
  
  ix=To.LastIndexOf("@");
  iy=To.LastIndexOf(".");
  iz=To.LastIndexOf(",");  if (ix>0 && iy>0 && iy>ix)
  {
  if (iz>0)
  { 
   MailAddress=s1.Split(split);
   for(int i=0;i<MailAddress.Length;i++)
   {
   ix=MailAddress[i].LastIndexOf("@");
   if (MailAddress[i].Substring(ix+1)=="sina.com")
   {Send_Method="1";}
   else{Send_Method="0";}
     
   mSendMail mySendMail = new mSendMail(ToName,MailAddress[i],FromName,From,Subject,Body);
   try
   {
    if (mySendMail.sendMail()== true)
    IsSuccess = 0;
   }
   catch
   {
      
   }
     
   }
  }
  else
  {
   if (s1.Substring(ix+1)=="sina.com")
   {Send_Method="1";}
   else{Send_Method="0";}
    
   mSendMail mySendMail = new mSendMail(ToName,To,FromName,From,Subject,Body);
   try
   {
   if (mySendMail.sendMail()== true)
    IsSuccess = 0;
   }
   catch
   {}
   
  }
  }
  else{IsSuccess=2;}
  return IsSuccess;
 }
 public int Send_TuiJian(string From, string To,string FromName,string ToName,string Title,string NewsAddr,string Message)
 {
  //读取邮件内容
  string MessagePath;
  if(System.Configuration.ConfigurationSettings.AppSettings["MessagePath"] != null)
  MessagePath = System.Configuration.ConfigurationSettings.AppSettings["MessagePath"].ToString();
  else
  MessagePath = @"D:\abc.htm";
  string strTemplate;
  
  StreamReader  stream = new StreamReader(MessagePath,System.Text.Encoding.GetEncoding("GB2312"));   
  try
  {
  
  stream.BaseStream.Seek(0,SeekOrigin.Begin);
  strTemplate = stream.ReadToEnd();
  strTemplate.Replace("\"","'");
  }
  finally
  {
  stream.Close();
  }  //替换
  string tmpMessage = Message;
  try
  {
  for (int i=0; i<=(Message.Length/35); i++)
  {
   tmpMessage = tmpMessage.Insert((i+1)*35,"<br>");
  }
  }
  catch
  {
  }
  Message = tmpMessage;
  Message = Message + "<br>";
  strTemplate = strTemplate.Insert(strTemplate.LastIndexOf("此致,礼"),Message);
  strTemplate = strTemplate.Replace("aa",ToName);
  strTemplate = strTemplate.Replace("bb",FromName);
  strTemplate = strTemplate.Replace("cc",Title);
  strTemplate = strTemplate.Replace(@"dd",NewsAddr);
  strTemplate = strTemplate.Replace("1980年",DateTime.Now.ToShortDateString());  //发送邮件
  int IsSuccess = 0;
  string Subject = "想请你去看看";
  
  //邮件地址判定
  string s1=To;
  int ix;
  int iy;
  int iz;
  char split;
  split=',';
  string[] MailAddress;
  
  ix=To.LastIndexOf("@");
  iy=To.LastIndexOf(".");
  iz=To.LastIndexOf(",");
  if (ix>0 && iy>0 && iy>ix)
  {
  if (iz>0)
  { 
   MailAddress=s1.Split(split);
   for(int i=0;i<MailAddress.Length;i++)
   {
   ix=MailAddress[i].LastIndexOf("@");
   if (MailAddress[i].Substring(ix+1)=="sina.com")
   {Send_Method="1";}
   else{Send_Method="0";}
     
   mSendMail mySendMail = new mSendMail(ToName,MailAddress[i],FromName,From,Subject,strTemplate);
   try
   {
    if (mySendMail.sendMail()== true)
    IsSuccess = 0;
   }
   catch
   {
      
   }
     
   }
  }
  else
  {
   if (s1.Substring(ix+1)=="sina.com")
   {Send_Method="1";}
   else{Send_Method="0";}
    
   mSendMail mySendMail = new mSendMail(ToName,To,FromName,From,Subject,strTemplate);
   try
   {
   if (mySendMail.sendMail()== true)
    IsSuccess = 0;
   }
   catch
   {}
   
  }
  }
  else{IsSuccess=2;}
  return IsSuccess; }
 }}

Tags:发布 源码 高效

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接