当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  用ASP.Net发送MailList

 用ASP.Net发送MailList

点击次数:17 次 发布日期:2008-11-26 15:52:22 作者:源代码网
源代码网推荐      /*
源代码网推荐  豆腐制作 都是精品
源代码网推荐  豆腐技术站 http://www.asp888.net
源代码网推荐  如转载 请保留完整版权信息
源代码网推荐  */
源代码网推荐  我们知道,在ASP.Net中发送Email 是一件很简单的事情,豆腐在这里要给大家将一种相对来说比较复杂的一种发送Email的方式,用Socket 来发送Email我们首先来熟悉熟悉SMTP 协议我们来看看SMTP 在 TELNET 下我们应该如何
源代码网推荐  命令:telnet pop.21cn.com 25
源代码网推荐  回应:220 21cn.com SMTP Server of AIMC 2.5.3.0; Sat Feb 10 11:34:18 2001
源代码网推荐  命令:helo www.asp888.ne
源代码网推荐  回应:250 21cn.com, www.asp888.net<61.134.6.89> okay.
源代码网推荐  命令:mail from:XXXX@21cn.com //XXX 是你在21cn 的user
源代码网推荐  回应:250 <XXXX@21cn.com>, sender ok.
源代码网推荐  命令:rcpt to:XXX@domain.com //XXX@domain.com 是收信人的mail地址
源代码网推荐  回应:250 User not local, will forward to <XXX@domain.com>.
源代码网推荐  命令:data
源代码网推荐  回应:354 Start mail input; end with <CRLF>.<CRLF>
源代码网推荐  From:<XXXX@21cn.com>
源代码网推荐  To:<XXX@doamin.com>
源代码网推荐  Subject:test
源代码网推荐  
源代码网推荐  this is a test
源代码网推荐  
源代码网推荐  .
源代码网推荐  
源代码网推荐  回应:250 Requested mail action okay, completed.
源代码网推荐  
源代码网推荐  好了,这个过程就是一个完整的SMTP的过程,下面我们就来看看 豆腐 用 C# 做的这个发送Mail的工具
源代码网推荐  
源代码网推荐  <%@ Assembly Name="System.Net" %>
源代码网推荐  <%@ Import Namespace="System.Net" %>
源代码网推荐  <% @Import Namespace="System.Net.Sockets" %>
源代码网推荐  <%@ Import Namespace="System.IO" %>
源代码网推荐  <script language="C#" runat=server>
源代码网推荐  protected void SendMailClick(Object Src, EventArgs E){
源代码网推荐  String smtpserver=txtSmtpserver.Text; //smtp服务器的IP地址
源代码网推荐  TCPClient tcpc = new TCPClient();
源代码网推荐  if (0 == tcpc.Connect(smtpserver, txtPort.Text.ToInt16()))
源代码网推荐  {
源代码网推荐  //连接smtp 服务器成功
源代码网推荐  Stream s;
源代码网推荐  StreamReader sr ;
源代码网推荐  String strCmd;
源代码网推荐  Byte[] arrCmd;
源代码网推荐  String strRet;
源代码网推荐  String[] arrRet;
源代码网推荐  
源代码网推荐  sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
源代码网推荐  strRet=sr.ReadLine() + "<br>"; //mail server 的欢迎语
源代码网推荐  //服务器连接成功以后,首先向服务器发送HeLo命令
源代码网推荐  strCmd="HELO www.asp888.net";
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //然后向服务器发送信件的成员的信箱
源代码网推荐  strCmd="mail from:"+ sender.Text;
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //向服务器发送收件人的信箱
源代码网推荐  strCmd="rcpt to:" + receive.Text;
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //所有的准备工作都已经作好了,下面开始进行邮件的部分
源代码网推荐  strCmd="data";
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //邮件内容
源代码网推荐  strCmd="Date: 1234567 ";
源代码网推荐  strCmd=strCmd+"From:" + sender.Text +" ";
源代码网推荐  strCmd=strCmd+"To:" + receive.Text +" ";
源代码网推荐  strCmd=strCmd+"Subject:" + subject.Text +" ";
源代码网推荐  strCmd=strCmd + content.Text +" ";
源代码网推荐  strRet=strRet + SenSmtpCmd1(tcpc,strCmd) + "<br>";
源代码网推荐  strCmd=" . ";
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  /*strCmd=strCmd+"From:xuexh@haitai.com.cm ";
源代码网推荐  strCmd=strCmd+"To:xuexh@haitai.com.cn ";
源代码网推荐  strCmd=strCmd+"subject:这是一个测试的邮件 ";
源代码网推荐  strCmd=strCmd+" ";
源代码网推荐  strCmd=strCmd+"这些是测试邮件的邮件内容 ";
源代码网推荐  strCmd=strCmd+" . ";
源代码网推荐  *///strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //最后 关闭与smtp 服务器的连接
源代码网推荐  tcpc.Close();
源代码网推荐  showmsg.Text=strRet;
源代码网推荐  }
源代码网推荐  else
源代码网推荐  {
源代码网推荐  showmsg.Text="对不起,连接服务器失败";
源代码网推荐  }
源代码网推荐  }
源代码网推荐  
源代码网推荐  String SenSmtpCmd(TCPClient tcpc,String strCmd){
源代码网推荐  //为了程序的简单可读,特意写了这个函数
源代码网推荐  Byte[] arrCmd;
源代码网推荐  String strRet;
源代码网推荐  StreamReader sr;
源代码网推荐  Stream s;
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  strCmd = strCmd + " ";
源代码网推荐  arrCmd= Encoding.Default.GetBytes(strCmd.ToCharArray());
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  s.Write(arrCmd, 0, strCmd.Length);
源代码网推荐  sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
源代码网推荐  strRet=sr.ReadLine();
源代码网推荐  return strRet;
源代码网推荐  }
源代码网推荐  String SenSmtpCmd1(TCPClient tcpc,String strCmd){
源代码网推荐  //为了程序的简单可读,特意写了这个函数
源代码网推荐  Byte[] arrCmd;
源代码网推荐  String strRet;
源代码网推荐  StreamReader sr;
源代码网推荐  Stream s;
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  strCmd = strCmd;
源代码网推荐  arrCmd= Encoding.Default.GetBytes(strCmd.ToCharArray());
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  s.Write(arrCmd, 0, strCmd.Length);
源代码网推荐  return "";
源代码网推荐  }
源代码网推荐  </script>
源代码网推荐  <form id=testForm runat=server>
源代码网推荐  <asp:label id=showmsg runat=server /><br>
源代码网推荐  SMTP服务器:<asp:TextBox id=txtSmtpserver runat=server /><asp:TextBox id=txtPort Text=25 runat=server /><br>
源代码网推荐  发信人:<asp:TextBox id=sender runat=server />
源代码网推荐  <br>
源代码网推荐  收信人:<asp:TextBox id=receive runat=server />
源代码网推荐  <br>
源代码网推荐  信件主题:<asp:TextBox id=subject runat=server />
源代码网推荐  <br>
源代码网推荐  信件内容:<asp:TextBox id=content runat=server TextMode=MultiLine rows=10/>
源代码网推荐  <asp:Button Text="发送" id=SendMail onClick=SendMailClick runat=server />
源代码网推荐  </form>
源代码网推荐  
源代码网推荐  大家可能在看这段程序的时候已经发现了这样的两个函数SenSmtpCmd和SenSmtpCmd1,这两个函数的作用是
源代码网推荐  SenSmtpCmd1不接收smtp server 传递回来的回应,主要是目前的这个版本的asp.net 在处理中文的时候还是存在一定的Bug,所以就只有采取这样的变通的办法了
源代码网推荐  前面我们讲过如何利用Asp.Net 来发送Mail,其实这篇文章的实际目的压根就不是为了让大家利用ASP.net
源代码网推荐  来简单的发送一封Mail,那样是没有任何作用的,因为Asp.Net 已经提供了这样的强大的功能
源代码网推荐  我们文章的标题就是MailList,所以我们的任务就是实现用Asp.Net发送一个MailList,前面的那位同志
源代码网推荐  说了,我们不需要这么麻烦,只要作个循环即可,不错,这个的确是一个办法,而且豆腐以前也一直是
源代码网推荐  这样在做的,但是这样作的缺点就是浪费了大量的流路资源,和 Mellissa又有什么本质的区别呢?
源代码网推荐  其实在SMTP(Simple Mail Transfer Protcol)已经提供了制作SMTP 的方法,当我们Connect 以后,我们可以不断的
源代码网推荐  向服务器发送RCPT 命令,这样就可以利用一个Connect向多个mail Addr 发送Mail 的Data 内容,在这里
源代码网推荐  我们一定要注意到我们的Data 内容仅仅是发送一次的,这样就节省了大量的网路资源。
源代码网推荐  
源代码网推荐  <%@ Assembly Name="System.Net" %>
源代码网推荐  <%@ Import Namespace="System.Net" %>
源代码网推荐  <% @Import Namespace="System.Net.Sockets" %>
源代码网推荐  <%@ Import Namespace="System.IO" %>
源代码网推荐  <script language="C#" runat=server>
源代码网推荐  protected void SendMailClick(Object Src, EventArgs E){
源代码网推荐  String smtpserver=txtSmtpserver.Text; //smtp服务器的IP地址
源代码网推荐  TCPClient tcpc = new TCPClient();
源代码网推荐  if (0 == tcpc.Connect(smtpserver, txtPort.Text.ToInt16()))
源代码网推荐  {
源代码网推荐  //连接smtp 服务器成功
源代码网推荐  Stream s;
源代码网推荐  StreamReader sr ;
源代码网推荐  String strCmd;
源代码网推荐  Byte[] arrCmd;
源代码网推荐  String strRet;
源代码网推荐  String[] arrRet;
源代码网推荐  
源代码网推荐  sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
源代码网推荐  strRet=sr.ReadLine() + "<br>"; //mail server 的欢迎语
源代码网推荐  //服务器连接成功以后,首先向服务器发送HeLo命令
源代码网推荐  strCmd="HELO www.asp888.net";
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //然后向服务器发送信件的成员的信箱
源代码网推荐  strCmd="mail from:"+ sender.Text;
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //向服务器发送收件人的信箱
源代码网推荐  strCmd="rcpt to:" + receive2.Text;
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //邮件列表的发送工作,其实就是打开一次Socket连接,发送多个mail的结果
源代码网推荐  strCmd="rcpt to:" + receive1.Text;
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //所有的准备工作都已经作好了,下面开始进行邮件的部分
源代码网推荐  strCmd="data";
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //邮件内容
源代码网推荐  strCmd="Date: 1234567 ";
源代码网推荐  strCmd=strCmd+"From:" + sender.Text +" ";
源代码网推荐  strCmd=strCmd+"To:" + receive1.Text + ";" + receive2.Text +" ";
源代码网推荐  //strCmd=strCmd+"To:" + receive1.Text + " ";
源代码网推荐  strCmd=strCmd+"Subject:" + subject.Text +" ";
源代码网推荐  strCmd=strCmd + content.Text +" ";
源代码网推荐  strRet=strRet + SenSmtpCmd1(tcpc,strCmd) + "<br>";
源代码网推荐  strCmd=" . ";
源代码网推荐  strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  /*strCmd=strCmd+"From:xuexh@haitai.com.cm ";
源代码网推荐  strCmd=strCmd+"To:xuexh@haitai.com.cn ";
源代码网推荐  strCmd=strCmd+"subject:这是一个测试的邮件 ";
源代码网推荐  strCmd=strCmd+" ";
源代码网推荐  strCmd=strCmd+"这些是测试邮件的邮件内容 ";
源代码网推荐  strCmd=strCmd+" . ";
源代码网推荐  *///strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
源代码网推荐  //最后 关闭与smtp 服务器的连接
源代码网推荐  tcpc.Close();
源代码网推荐  showmsg.Text=strRet;
源代码网推荐  }
源代码网推荐  else
源代码网推荐  {
源代码网推荐  showmsg.Text="对不起,连接服务器失败";
源代码网推荐  }
源代码网推荐  }
源代码网推荐  
源代码网推荐  String SenSmtpCmd(TCPClient tcpc,String strCmd){
源代码网推荐  //为了程序的简单可读,特意写了这个函数
源代码网推荐  Byte[] arrCmd;
源代码网推荐  String strRet;
源代码网推荐  StreamReader sr;
源代码网推荐  Stream s;
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  strCmd = strCmd + " ";
源代码网推荐  arrCmd= Encoding.Default.GetBytes(strCmd.ToCharArray());
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  s.Write(arrCmd, 0, strCmd.Length);
源代码网推荐  sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
源代码网推荐  strRet=sr.ReadLine();
源代码网推荐  return strRet;
源代码网推荐  }
源代码网推荐  String SenSmtpCmd1(TCPClient tcpc,String strCmd){
源代码网推荐  //为了程序的简单可读,特意写了这个函数
源代码网推荐  Byte[] arrCmd;
源代码网推荐  String strRet;
源代码网推荐  StreamReader sr;
源代码网推荐  Stream s;
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  strCmd = strCmd;
源代码网推荐  arrCmd= Encoding.Default.GetBytes(strCmd.ToCharArray());
源代码网推荐  s=tcpc.GetStream();
源代码网推荐  s.Write(arrCmd, 0, strCmd.Length);
源代码网推荐  return "";
源代码网推荐  }
源代码网推荐  </script>
源代码网推荐  <form id=testForm runat=server>
源代码网推荐  <asp:label id=showmsg runat=server /><br>
源代码网推荐  SMTP服务器:<asp:TextBox id=txtSmtpserver runat=server /><asp:TextBox id=txtPort Text=25 runat=server /><br>
源代码网推荐  发信人:<asp:TextBox id=sender runat=server />
源代码网推荐  <br>
源代码网推荐  收信人1:<asp:TextBox id=receive1 runat=server />
源代码网推荐  <br>
源代码网推荐  收信人2:<asp:TextBox id=receive2 runat=server />
源代码网推荐  <br>
源代码网推荐  信件主题:<asp:TextBox id=subject runat=server />
源代码网推荐  <br>
源代码网推荐  信件内容:<asp:TextBox id=content runat=server TextMode=MultiLine rows=10/>
源代码网推荐  <asp:Button Text="发送" id=SendMail onClick=SendMailClick runat=server />
源代码网推荐  </form>
源代码网推荐  
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华