由于公司邮箱的密码,已经忘了,但又不好麻烦人事去重置,于是查了些资料,也是比较简单的了。
//在Main函数中,我们的第一个任务是创建一个ipEndPoint,让一个TCP服务器监听该端点,接收来自客户端的请求: // 在127.0.0.1(本地机器)上创建一个TCP服务器,监听 // 110端口的请求(110是POP3服务器的默认端口) 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)); textBox1.Text = Encoding.ASCII.GetString(userBytes); textBox2.Text = Encoding.ASCII.GetString(pwdBytes); //既然已经获得了密码,服务器的任务已经完成了,现在可以关闭它。强行关闭服务器会导致客户程序显示错误信息,不过这里我们并不在乎。关闭服务器的代码是: //关闭服务器 ns.Close(); tcpClient.Close(); tcpServer.Stop(); //将上面的所有代码依次输入Main函数,编译一下就得到了一个PServer.exe执行文件,它就是我们的伪POP3服务器
然后把客户端的POP的服务器设置成localhost 即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2010-04-03 如何获取QQ的clientkey
2010-04-03 在XP下是可以查看进程命令行参数的
2007-04-03 用SQL 查询重复记录