如何使用TcpClient和SslStream从hotmail帐户获取最新邮件

时间:2012-05-02 09:46:00

标签: c# windows tcpclient hotmail sslstream

我创建了一个Windows测试应用程序,我在其中连接到我的hotmail帐户并检查那里的未读邮件。目前通过我的应用程序,我从我的hotmail帐户收到了最后一封邮件。

如何获取最新邮件以及是否可以使用SSLStream对象获取最新邮件的主题和正文。

我在这里发布我的代码。请帮助我这个。任何适当的帮助将不胜感激。它写的地方"得到第一封邮件",我只得到总数第一封邮件的字节。请帮助我获取第一个电子邮件主题和正文。

        TcpClient mail = new TcpClient();
        SslStream sslStream;
        int bytes = -1;
        mail.Connect("pop3.live.com", 995);
        sslStream = new SslStream(mail.GetStream());
        sslStream.AuthenticateAsClient("pop3.live.com");

        byte[] buffer = new byte[2048];
        // Read the stream to make sure we are connected
        bytes = sslStream.Read(buffer, 0, buffer.Length);
        string message = Encoding.ASCII.GetString(buffer, 0, bytes);
        MessageBox.Show(message);

        //Send the users login details
        sslStream.Write(Encoding.ASCII.GetBytes("USER user_name\r\n"));
        bytes = sslStream.Read(buffer, 0, buffer.Length);
        string message1 = Encoding.ASCII.GetString(buffer, 0, bytes);
        MessageBox.Show(message1);

        //Send the password                        
        sslStream.Write(Encoding.ASCII.GetBytes("PASS password\r\n"));
        bytes = sslStream.Read(buffer, 0, buffer.Length);
        string message2 = Encoding.ASCII.GetString(buffer, 0, bytes);
        MessageBox.Show(message2);

        // Get the first email 
        sslStream.Write(Encoding.ASCII.GetBytes("RETR 1\r\n"));
        bytes = sslStream.Read(buffer, 0, buffer.Length);
        string message4 = Encoding.ASCII.GetString(buffer, 0, bytes);
        MessageBox.Show(message4);

        string str = string.Empty;
        string strTemp = string.Empty;
        StreamReader reader = new StreamReader(sslStream); 
        while ((strTemp = reader.ReadLine()) != null)
        {

            // find the . character in line
            if (strTemp == ".")
            {
                break;

            }
            if (strTemp.IndexOf("-ERR") != -1)
            {
                break;

            }
            str += strTemp;

        }
        MessageBox.Show(str);
    }

通过对代码的一些修改,我可以访问hotmail帐户。但是当我尝试访问AOl帐户时,使用相同的代码。我正在获得IO异常。任何人都可以帮助我如何连接到AOL邮件系统使用此代码。感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为你必须实现pop协议来获取pop服务器的电子邮件;在你的情况下hotmail。你会找到关于从{3}}

上的hotmail / gmail等pop3服务器打开邮件的好文章