快速业务通道

C#编程让Outlook乖乖交出帐户密码

作者 凌众技术 来源 互联网 浏览 发布时间 2012-01-14
务器的默认端口)
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),110);
TcpListener tcpServer = new TcpListener(ipEndPoint);
tcpServer.Start();
// 等待来自POP3客户程序(如Outlook)的连接请求
TcpClient tcpClient = tcpServer.AcceptTcpClient();
 

    当一个POP3客户程序连接该服务器时,服务器必须按照POP3协议的要求对客户程序作出应答。根据POP3协议RFC 1939规范的定义,服务器首先要做的是返回一个欢迎信息:

// 向客户程序返回欢迎信息
NetworkStream ns = tcpClient.GetStream();
byte[] outbytes = Encoding.ASCII.GetBytes("+OK Welcome" + Environment.NewLine);
ns.Write(outbytes,0,outbytes.Length);
 

    客户程序接收到欢迎信息后,同样也会按照POP3协议的要求发送帐户名称。我们把这个帐户名称记录下来以便以后使用,代码如下:

// 接收和记录邮箱帐户名称
byte[] userBytes = new byte[255];
ns.Read(userBytes,0,userBytes.Length);
 

    收到帐户名称信息后,我们要告诉Outlook说这个名称没有问题,客户程序一收到这个信息就会发送密码,然后我们再把密码也记录下来。实现代码是:

// 告诉客户程序帐户名称正确
outbytes = Encoding.ASCII.GetBytes("+OK" + Environment.NewLine);
ns.Write(outbytes,0,outbytes.Length);
// 接收和记录帐户密码
byte[] pwdBytes = new byte[255];
ns.Read(pwdBytes,0,pwdBytes.Length);
 

    接下来要做的就是获取字节数组的内容,将它们转换成字符串,然后输出到控制台:

// 在控制台上显示出帐户名称、密码
Console.WriteLine("帐户名称:" + Encoding.ASCII.GetString(userBytes));
Console.WriteLine("帐户密码:" + Encoding.ASCII.GetString(pwdBytes));
 

    既然已经获得了密码,服务器的任务已经完成了,现在可以关闭它。强行关闭服务器会导致客户程序显示错误信息,不过这里我们并不在乎。关闭服务器

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号