日期:2013-11-01  浏览次数:20427 次

/*
  豆腐制作 都是精品
  http://www.asp888.net  豆腐技术站
  如转载 请保留完整版权信息
*/
前面我曾经讲过如何在asp.net下利用socket编程实现域名查询,详细情况请看文章:http://www.asp888.net/lanmu/viewArticle.asp?id=51[title]asp+中实现域名查询的完整代码[/title]
豆腐有一天突然想,既然可以利用socket实现域名查询,那是不是只要是利用到socket客户端
编程的以前的 Windows 桌面程序都可以用asp.net 实现呢?说干就干,我第一个准备要做的就是
一个asp.net 版本的邮件接收程序,我们知道,在asp+中发送Email是见很方便的事情(http://www.asp888.net/lanmu/viewArticle.asp?id=95[title]asp+发送Email完全手册[/title]),可是怎么进行
收取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("发信人:" + a