Реализация протокола pop. При попытке реализовать такие команды, как STAT и LIST программа зависает - C#
Формулировка задачи:
Здравствуйте! Пытаюсь создать простого почтового клиента, используя методы класса TcpClient. Получилось реализовать чтение одного письма согласно следующему коду:
Но при попытке реализовать такие команды, как STAT и LIST программа зависает. Подозреваю, что проблема в цикле чтения. Для STAT использовал в качестве признака конца строки символы \r\n (т. е. strTemp = "\r\n"), а для LIST - ".\r\n". Подскажите, как исправить? Заранее спасибо!
// create an instance of TcpClient TcpClient tcpclient = new TcpClient(); // HOST NAME POP SERVER and gmail uses port number 995 for POP tcpclient.Connect("pop.gmail.com", 995); // This is Secure Stream // opened the connection between client and POP Server System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream()); // authenticate as client sslstream.AuthenticateAsClient("pop.gmail.com"); //bool flag = sslstream.IsAuthenticated; // check flag // Asssigned the writer to stream System.IO.StreamWriter sw = new StreamWriter(sslstream); // Assigned reader to stream System.IO.StreamReader reader = new StreamReader(sslstream); // refer POP rfc command, there very few around 6-9 command sw.WriteLine("USER [email]removed@mail.ru[/email]"); // sent to server sw.Flush(); sw.WriteLine("PASS my_pass"); sw.Flush(); // this will retrive your first email sw.WriteLine("RETR 1"); sw.Flush(); string str = string.Empty; string strTemp = string.Empty; while ((strTemp = reader.ReadLine()) != null) { // find the . character in line if (strTemp == ".") { break; } if (strTemp.IndexOf("-ERR") != -1) { break; } str += strTemp; } // close the connection sw.WriteLine("QUIT"); sw.Flush(); richTextBox2.Text = str;
Решение задачи: «Реализация протокола pop. При попытке реализовать такие команды, как STAT и LIST программа зависает»
textual
Листинг программы
// close the connection sw.WriteLine("QUIT"); sw.Flush();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д