选择显示字体大小

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

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;

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.netsocket 程序的
理解,还可以通过这个程序接收isp提供的没有web方式收取邮件的程序对isp的信箱进行管理。这个程序主要是对asp.net
操作pop服务器进行编程,加上时间仓促,所以很多地方都直接用了response.write("")这样的语句,我的意思是这篇文章
只是简单的知识讲解,大家最终具体应用的时候,肯定是要另外优化这段程序的!那边有人扔砖头了:这个豆腐怎么这么懒:)

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons