Как получить последнюю почту из учетной записи hotmail с помощью TcpClient и 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, используя этот код .Спасибо за любую помощь.


person Vipin Nair    schedule 02.05.2012    source источник


Ответы (1)


Я думаю, вам нужно реализовать поп-протокол, чтобы получать электронную почту для поп-сервера; в вашем случае хотмейл. Вы найдете хорошую статью об открытии почты с серверов pop3, таких как hotmail/gmail, через здесь

person Adil    schedule 02.05.2012
comment
Можно подробнее, у меня не так много знаний о поп-музыке, пожалуйста - person Vipin Nair; 02.05.2012
comment
Я только что обновил свой ответ. Вы можете протестировать получение почты с помощью примера здесь и понять, как это сделать. codeproject.com/Articles/261607/ - person Adil; 02.05.2012
comment
Могу ли я загрузить библиотеку классов и использовать ее в своем проекте. Доступна ли она для загрузки? Спасибо за помощь. Пожалуйста, ответьте и на этот вопрос тоже - person Vipin Nair; 02.05.2012
comment
Найдите исходный код загрузки или демо-версию на данной странице. - person Adil; 02.05.2012
comment
Я скопировал DLL с именем pop3lib.dll и попытаюсь проверить с помощью DLL - person Vipin Nair; 02.05.2012
comment
Показывает ошибку, что существующее соединение было принудительно закрыто хостом. - person Vipin Nair; 02.05.2012
comment
Не могу ли я получить содержимое электронной почты с помощью sslstream? - person Vipin Nair; 02.05.2012
comment
Я использую те же учетные данные, используя клиент tcp и его работу. - person Vipin Nair; 02.05.2012
comment
Показывает ошибку, что существующее соединение было принудительно закрыто хостом - person Vipin Nair; 02.05.2012
comment
Возможно, вы делаете что-то не так. Проверьте свои входные данные и доступ к порту, так как я проверил свою электронную почту, и это не дало мне никаких ошибок. - person Adil; 02.05.2012
comment
Для hotmail его порт 995 правильно, я проверил с этим Pop3Lib.Client myPop3 = new Pop3Lib.Client (pop.gmail.com, имя пользователя@gmail.com, пароль, 995); после выполнения этой строки я получаю исключение - person Vipin Nair; 02.05.2012
comment
Я просто добавил dll, а затем создал объект pop3lib.client. - person Vipin Nair; 02.05.2012
comment
Я использую имя сервера pop3.live.com. Это вызывает проблему? - person Vipin Nair; 02.05.2012
comment
Если вы используете Gmail, используйте pop.gmail.com, и все учетные данные должны быть от Gmail. - person Adil; 02.05.2012
comment
Нет, я не использую Gmail, я использую Hotmail, и я также хочу использовать AOL - person Vipin Nair; 02.05.2012