Команда Retrieve не работает при попытке получить доступ к почте из pop3 C # - PullRequest
1 голос
/ 22 ноября 2011

Когда я подключаюсь к pop3.live.com, соединение в порядке, и оно также показывает мне количество сообщений, которые у меня есть, и размер файла, но когда я пытаюсь использовать «RETR», чтобы получить сообщения и показать их нав консольном приложении ничего не представлено.

Вот что у меня пока что

 string str = string.Empty;
            string strTemp = string.Empty;
            using (TcpClient tc = new TcpClient())
            {
                tc.Connect("pop3.live.com", 995);
                using (SslStream sl = new SslStream(tc.GetStream()))
                {
                    sl.AuthenticateAsClient("pop3.live.com");
                    using (StreamReader sr = new StreamReader(sl))
                    {
                        using (StreamWriter sw = new StreamWriter(sl))
                        {
                            sw.WriteLine("USER " + _username);
                            sw.Flush();
                            sw.WriteLine("PASS "+ _password);
                            sw.Flush();
                            sw.WriteLine("LIST");
                            sw.Flush();
                            sw.WriteLine("RETR");
                            sw.Flush();
                            sw.WriteLine("QUIT ");
                            sw.Flush();

                            while ((strTemp = sr.ReadLine()) != null)
                            {
                                if (strTemp == "." || strTemp.IndexOf("-ERR") != -1)
                                {
                                    break;
                                }
                                str += strTemp;
                            }
                        }
                    }
                }
            }
            Console.WriteLine(str);
            Console.ReadLine();

Ответы [ 2 ]

1 голос
/ 25 ноября 2011

Сначала вы должны использовать команду LIST, которая перечисляет номера сообщений. Затем выполните одну или несколько команд RETR с одним номером сообщения из предыдущего списка. Номера сообщений не обязательно начинаются с 1! См. Также мой комментарий на ваш вопрос об устранении этой проблемы.

Например:

LIST
+OK 2 messages (4095)
1 710
2 3385
.
RETR 1
+OK 710 octets
Return-Path: <john@example.com>
...
1 голос
/ 22 ноября 2011

С помощью RETR вам нужно указать, какое сообщение вы хотите получить.RETR без номера не поддерживается согласно спецификации POP3 .

...