用ASP.Net发送MailList(2)

发表于:2007-06-30来源:作者:点击数: 标签:
好了,这个过程就是一个完整的SMTP的过程,下面我们就来看看 豆腐 用 C# 做的这个发送Mail的工具 <%@ Assembly Name="System .net " %> <%@ Import Namespace="System.Net" %> <% @Import Namespace="System.Net.Sockets" %> <%@ Import Namespace="Sy
     好了,这个过程就是一个完整的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; file://smtp服务器的IP地址
  
      TCPClient tcpc = new TCPClient();
  
      if (0 == tcpc.Connect(smtpserver, txtPort.Text.ToInt16()))
  
       {
  
        file://连接smtp 服务器成功
  
        Stream s;
  
        StreamReader sr ;
  
        String strCmd;
  
  
        Byte[] arrCmd;
  
        String strRet;
  
        String[] arrRet;
  
        sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
  
        strRet=sr.ReadLine() + "<br>"; file://mail server 的欢迎语
  
        file://服务器连接成功以后,首先向服务器发送HeLo命令
  
        strCmd="HELO www.ASP888.net";
  
        strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
  
        file://然后向服务器发送信件的成员的信箱
  
        strCmd="mail from:"+ sender.Text;
  
        strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
  
        file://向服务器发送收件人的信箱
  
        strCmd="rcpt to:" + receive.Text;
  
        strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
  
        file://所有的准备工作都已经作好了,下面开始进行邮件的部分
  
        strCmd="data";
  
        strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
  
        file://邮件内容
  
        strCmd="Date: 1234567\r\n";
  
        strCmd=strCmd+"From:" + sender.Text +"\r\n";
  
        strCmd=strCmd+"To:" + receive.Text +"\r\n";
  
        strCmd=strCmd+"Subject:" + subject.Text +"\r\n\r\n";
  
        strCmd=strCmd + content.Text +"\r\n\r\n";
  
        strRet=strRet + SenSmtpCmd1(tcpc,strCmd) + "<br>";
  
        strCmd="\r\n.\r\n";
  
        strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
  
        /*strCmd=strCmd+"From:xuexh@haitai.com.cm\r\n";
  
        strCmd=strCmd+"To:xuexh@haitai.com.cn\r\n";
  
        strCmd=strCmd+"subject:这是一个测试的邮件\r\n";
  
        strCmd=strCmd+"\r\n";
  
        strCmd=strCmd+"这些是测试邮件的邮件内容\r\n";
  
        strCmd=strCmd+"\r\n.\r\n";
  
        *///strRet=strRet + SenSmtpCmd(tcpc,strCmd) + "<br>";
  
        file://最后 关闭与smtp 服务器的连接
  
        tcpc.Close();
  
        showmsg.Text=strRet;
  
       }
  
      else
  
       {
  
        showmsg.Text="对不起,连接服务器失败";
  
       }
  
     }
  
     String SenSmtpCmd(TCPClient tcpc,String strCmd){
  
     file://为了程序的简单可读,特意写了这个函数
  
      Byte[] arrCmd;
  
      String strRet;
  
      StreamReader sr;
  
      Stream s;
  
      s=tcpc.GetStream();
  
      strCmd = strCmd + "\r\n";
  
      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){
  
      file://为了程序的简单可读,特意写了这个函数
  
     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,所以就只有采取这样的变通的办法了。
  

原文转自:http://www.ltesting.net