国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net實現pop功能

2024-07-10 12:57:57
字體:
來源:轉載
供稿:網友
/*
  豆腐制作 都是精品
  http://www.asp888.net  豆腐技術站
  如轉載 請保留完整版權信息
*/
前面我曾經講過如何在asp.net下利用socket編程實現域名查詢,詳細情況請看文章:[url]http://www.asp888.net/lanmu/viewarticle.asp?id=51[title]asp+中實現域名查詢的完整代碼[/title][/url]
豆腐有一天突然想,既然可以利用socket實現域名查詢,那是不是只要是利用到socket客戶端
編程的以前的 windows 桌面程序都可以用asp.net 實現呢?說干就干,我第一個準備要做的就是
一個asp.net 版本的郵件接收程序,我們知道,在asp+中發送email是見很方便的事情([url]http://www.asp888.net/lanmu/viewarticle.asp?id=95[title]asp+發送email完全手冊[/title][/url]),可是怎么進行
收取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的信箱進行管理。這個程序主要是對asp.net
操作pop服務器進行編程,加上時間倉促,所以很多地方都直接用了response.write("")這樣的語句,我的意思是這篇文章
只是簡單的知識講解,大家最終具體應用的時候,肯定是要另外優化這段程序的!那邊有人扔磚頭了:這個豆腐怎么這么懶:)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武强县| 祥云县| 苍山县| 芒康县| 兴化市| 安庆市| 韩城市| 安阳市| 达州市| 东平县| 紫金县| 房产| 西吉县| 潞西市| 广西| 柳州市| 龙岩市| 呼和浩特市| 民丰县| 确山县| 伊宁市| 雅江县| 侯马市| 昭通市| 西和县| 辛集市| 饶平县| 秦安县| 铜山县| 日照市| 济源市| 郑州市| 望城县| 新密市| 历史| 嫩江县| 上犹县| 澳门| 漳州市| 江都市| 咸宁市|