Реализация протокола pop. При попытке реализовать такие команды, как STAT и LIST программа зависает - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пытаюсь создать простого почтового клиента, используя методы класса TcpClient. Получилось реализовать чтение одного письма согласно следующему коду:
// 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;
Но при попытке реализовать такие команды, как STAT и LIST программа зависает. Подозреваю, что проблема в цикле чтения. Для STAT использовал в качестве признака конца строки символы \r\n (т. е. strTemp = "\r\n"), а для LIST - ".\r\n". Подскажите, как исправить? Заранее спасибо!

Решение задачи: «Реализация протокола pop. При попытке реализовать такие команды, как STAT и LIST программа зависает»

textual
Листинг программы
// close the connection
                sw.WriteLine("QUIT");
                sw.Flush();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы