POP3

原创 2004年07月21日 10:12:00

asp.net实现pop功能
asp.net实现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>

POP3和SMTP的C++实现代码

By Fanxiushu ,引用和转载请注明原作者。 多年前写的邮件收发c++代码,有兴趣的朋友可看看。 支持windows和linux平台编译运行。 /// mail.h 头文件 ...
  • fanxiushu
  • fanxiushu
  • 2013年06月23日 18:02
  • 1806

POP3邮件接收协议命令使用详解

第1章 POP3概述 POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型,对应的RFC文...
  • New_Teacher
  • New_Teacher
  • 2016年05月13日 09:28
  • 5040

python学习——POP3收取邮件

SMTP用于发送邮件,如果要收取邮件呢? 收取邮件就是编写一个MUA作为客户端,从MDA把邮件获取到用户的电脑或者手机上。收取邮件最常用的协议是POP协议,目前版本号是3,俗称POP3。 Pyth...
  • youzhouliu
  • youzhouliu
  • 2016年07月19日 08:13
  • 2067

SMTP和POP3

  • 2015年06月05日 11:44
  • 27KB
  • 下载

POP3邮件接收

  • 2017年12月14日 22:56
  • 29KB
  • 下载

常用的邮箱服务器(SMTP、POP3)地址、端口

  • 2017年11月30日 09:29
  • 29KB
  • 下载

pop3.class.php5.inc.php

  • 2012年07月20日 11:16
  • 25KB
  • 下载

C++开发的基于POP3协议的电子邮件接收端

  • 2010年04月22日 01:19
  • 3.68MB
  • 下载

使用pop3协议的小程序

  • 2015年05月31日 10:53
  • 2KB
  • 下载

smtp pop3

  • 2011年07月16日 23:05
  • 169KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POP3
举报原因:
原因补充:

(最多只允许输入30个字)