利用asp+的独特的底层操作的功能实现对Pop服务器的存取(实现了asp+收pop信件的功能)

2016-01-29 13:58 31 1 收藏

利用asp+的独特的底层操作的功能实现对Pop服务器的存取(实现了asp+收pop信件的功能),利用asp+的独特的底层操作的功能实现对Pop服务器的存取(实现了asp+收pop信件的功能)

【 tulaoshi.com - ASP.NET 】

http://www.asp888.net 豆腐技术站

前面我曾经讲过如何在asp.net下利用socket编程实现域名查询,详细情况请看文章:asp+中实现域名查询的完整代码
豆腐有一天突然想,既然可以利用socket实现域名查询,那是不是只要是利用到socket客户端
编程的以前的 Windows 桌面程序都可以用asp.net 实现呢?说干就干,我第一个准备要做的就是
一个asp.net 版本的邮件接收程序,我们知道,在asp+中发送Email是见很方便的事情(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;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

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;
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

//用户和密码 匹配,下面开始 统计用户信箱的信息
//这个数组中包括了所有的返回信息
arrRet=StaticMailBox(tcpc);
if(arrRet[0]!="+OK"){
Response.Write("出错了!");
return;
}
Response.Write("当前的用户<font color=blue" + user + "</font的信箱中共有<font color=red" + arrRet + "</font封,共占<font color=red" + arrRet + "</fontByte");

//收信
arrRet=PopMail(tcpc,4);
//判断返回
if(arrRet[0]!="+OK"){
Response.Write("出错了");
}
Response.Write("邮件日期:" + arrRet + "n<br");
Response.Write("发信人:" + arrRet + "n<br");
Response.Write("收信人:" + arrRet + "n<br");
Response.Write("邮件主题:" + arrRet + "n<br");
Response.Write("邮件内容:" + arrRet + "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 + "rn";
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;
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=redn<BR");
while (sr.Peek()!=46)
{
//呵呵,不知道 为什么 非要是 46 才可以!
strRet=sr.ReadLine();
arrTemp=strRet.Split(":".ToCharArray());
if(strR

来源:https://www.tulaoshi.com/n/20160129/1492154.html

延伸阅读
标签: ASP
  概述 对于任何的WEB应用程序服务器,一个主要的要求就是具有丰富而且灵活具有柔韧性的配置系统——使开发者能够让“可 安装的应用程序”容易地与“设置数据”联系,而无须将设置值置入程序代码,而且,能使Administrators方便容易地调 整、定制这些设置值 Post-deployment。 ASP+ 配置系统致力于满足这两个必要条件。为做到这些,...
/* 豆腐制作 都是精品 http://www.asp888.net 豆腐技术站 如转载 请保留版权信息 */ Hash 表是一组包含有Key 和 Value 数据 的表,我们可以通过 下面的这个例子 看看如何操作Hashtable <html <head <script language="VB" runat="server" Sub Page_Load( s As Object, e As EventArgs ) If Not IsPostBack Then Dim myHash As N...
标签: ASP
  层次配置体系 我们曾论及,服务器上可以有多个配置文件存在于不同的目录中。当对一个详细URL的请求到达时,ASP+计算该URL在层 次结构风格中的设定,并为所请求的URL使用在路径中定位的配置文件。 例如,一个站点的结构如下: Application Root |-----SubDir1 |-----SubDir2 想法是,配置应用程序的设定使所有的用户都可以...
标签: ASP
  前几日我曾经阅读到一篇技术文章讲述如何使用VBScript中的正则表达式对象来实现论坛里面的UBB功能。VBScript提供的正则表达式对象功能非常强大,但是只有5。5以上的脚本引擎才可以很好的支持正则表达式对象,为了获得版本是 5。5的脚本引擎,你需要单独安装这个脚本引擎,或者安装IE5.5,也就是说对服务器的要求比较苛刻,那就没有其他...
标签: ASP
  应广大好友的提议,本站将会常推出有关程序设计思路的文章。     在ASP中实现OICQ式的发信息功能,实现此功能的方法很多,在此我主要介绍以数组存取信息的方式。     在ASP中定义一个数组变量:APPLICATION(ID,IX)(例:APPLICATION(100,30)),ID表示用户号,可以是100,就是同时可以让100...

经验教程

456

收藏

71
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部