<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      asp.net完成pop技巧

      [摘要]一個asp.net 版本的郵件接收程序,我們知道,在asp+中發送Email是見很方便的事情,可是怎么進行收取pop信件的程序呢?看來只有拿出豆腐的殺手劍了:)首先我們來看看這個程序的代碼:pop.aspx<%@ Assembly Name="System.Net" %&...

      一個asp.net 版本的郵件接收程序,我們知道,在asp+中發送Email是見很方便的事情,可是怎么進行收取pop信件的程序呢?看來只有拿出豆腐的殺手劍了:)
      首先我們來看看這個程序的代碼:
      pop.aspx



      <%@ Assembly Name="System.Net" %>
      <%@ Import Namespace="System.Net" %>
      <% @Import Namespace="System.Net.Sockets" %>
      <%@ Import Namespace="System.IO" %>
      <script language="C#" runat=server>
      protected void Page_Load(Object Src, EventArgs E){
         String user="doufu";       //郵箱用戶代碼
         String pass="asp888.net";  //郵箱用戶密碼
         String popserver="localhost"; //pop服務器IP地址 
         TCPClient tcpc = new TCPClient();
         if (0 == tcpc.Connect(popserver, 110))
         { 
            //如果程序執行到這里,就表示連接Pop Server 成功
            Stream s;
            StreamReader sr ;
            String strCmd;
            Byte[] arrCmd;
            String strRet;
            String[] arrRet;    



            sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
            Response.Write(sr.ReadLine() + "<br>");  //mail server 的歡迎語
            
            strRet=Logon(tcpc,user,pass);
            
            if(JudgeString(strRet)!="+OK"){
              Response.Write("對不起,沒有這個用戶/密碼 不匹配");
              return;
            }



            //用戶和密碼 匹配,下面開始 統計用戶信箱的信息
            //這個數組中包括了所有的返回信息
            arrRet=StaticMailBox(tcpc);
            if(arrRet[0]!="+OK"){
              Response.Write("出錯了!");
              return;
            }
            Response.Write("當前的用戶<font color=blue>" + user + "</font>的信箱中共有<font color=red>" + arrRet[1] + "</font>封,共占<font color=red>" + arrRet[2] + "</font>Byte");
            
            //收信
            arrRet=PopMail(tcpc,4);
            //判斷返回
            if(arrRet[0]!="+OK"){
              Response.Write("出錯了");
            }
            Response.Write("郵件日期:" + arrRet[1] + "\n<br>");
            Response.Write("發信人:" + arrRet[2] + "\n<br>");
            Response.Write("收信人:" + arrRet[3] + "\n<br>");
            Response.Write("郵件主題:" + arrRet[4] + "\n<br>");
            Response.Write("郵件內容:" + arrRet[5] + "\n<br>");
            //關閉Socket聯結
            tcpc.Close();
          }
         else
          {
            Response.Write("Could not connect to server!");
          }
      }
      String SendPopCmd(TCPClient tcpc,String strCmd){
            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 Logon(TCPClient tcpc,String user,String pass){
            //這個函數的功能是 對 獲得聯結的用戶 身份進行驗證
            //發送 用戶代碼      
            String strRet;
            strRet=SendPopCmd(tcpc,"user " + user);
            strRet=SendPopCmd(tcpc,"pass " + pass);
            return strRet;
      }
      String[] StaticMailBox(TCPClient tcpc){
         String strRet;
         strRet=SendPopCmd(tcpc,"stat");
         if(JudgeString(strRet)!="+OK"){
           return "-ERR -ERR".Split(" ".ToCharArray());
         }
         String[] arrRet=strRet.Split(" ".ToCharArray());
         return arrRet;
      }
      String JudgeString(String strCheck){
         if(strCheck.Substring(0,3)!="+OK"){
           return "-ERR";
         }
         else
           return "+OK";
      }
      String[] PopMail(TCPClient tcpc,int i){
         String strRet;
         bool strBody=false;
         String[] arrRet =new String[10];
         String[] arrTemp;
         strRet=SendPopCmd(tcpc,"retr " + i.ToString());
         if(JudgeString(strRet)!="+OK"){
           //表示沒有這個信件 或者 其他的錯誤
           return "-ERR -ERR".Split(" ".ToCharArray());
         }
         StreamReader sr;
         sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
         Response.Write("\n<BR>");
         Response.Write("<font color=red>\n<BR>");
         while (sr.Peek()!=46)
         {
           //呵呵,不知道 為什么 非要是 46 才可以!
           strRet=sr.ReadLine();
           arrTemp=strRet.Split(":".ToCharArray());
           if(strRet=="")
              strBody=true; //現在開始接收 Body 的信息
           if(arrTemp[0]=="Date"){
                arrRet[1]=arrTemp[1];  //信件的發送日期
                }
           if(arrTemp[0]=="From")
              arrRet[2]=arrTemp[1];  //發信人
           if(arrTemp[0]=="To")
              arrRet[3]=arrTemp[1];  //收信人
           if(arrTemp[0]=="Subject")
              arrRet[4]=arrTemp[1];  //主題
           if(strBody){
              arrRet[5]=arrRet[5] + strRet + "\n";
           }
         }



         arrRet[0]="+OK";
         return arrRet;
      }
      </script>
      好了大家通過這個程序,首先可以了解到pop(Post Ofice Protocal)協議,其次可以加深對asp.net的socket 程序的
      理解,還可以通過這個程序接收ISP提供的沒有Web方式收取郵件的程序對ISP的信箱進行管理。



      相關文章

      日韩精品一区二区三区高清