zoukankan      html  css  js  c++  java
  • C#获取邮件客户端保存的邮箱密码

    有时候邮件客户端记录了邮箱密码,但自己却忘记了,此时可以使用C#建立一个临时的“邮件服务器”,截取密码:

                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);
    
                //接下来要做的就是获取字节数组的内容,将它们转换成字符串,然后输出到控制台:
    
                // 在控制台上显示出帐户名称、密码
                textBox1.Text = string.Format("帐户名称:{0}", Encoding.ASCII.GetString(userBytes));
                textBox1.Text += string.Format("帐户密码:{0}", Encoding.ASCII.GetString(pwdBytes));
    
                //既然已经获得了密码,服务器的任务已经完成了,现在可以关闭它。强行关闭服务器会导致客户程序显示错误信息,不过这里我们并不在乎。关闭服务器的代码是:
    
                // 关闭服务器
                ns.Close();
                tcpClient.Close();
                tcpServer.Stop();
                MessageBox.Show("ok");


  • 相关阅读:
    235. Lowest Common Ancestor of a Binary Search Tree
    234. Palindrome Linked List
    233. Number of Digit One
    232. Implement Queue using Stacks
    231. Power of Two
    230.Kth Smallest Element in a BST
    229. Majority Element II
    228. Summary Ranges
    postgres 数组中获取最后一个元素的值
    excel 拆分单元格并填充上一行的数据
  • 原文地址:https://www.cnblogs.com/apollokk/p/6713844.html
Copyright © 2011-2022 走看看