Проблема с кодировкой входящих писем. почтовый клиент. приём почты. POP3. - C#

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

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

Скачал класс ( прогу в коде ) POP3 стороннего разработчика для приемё писем. http://www.codeproject.com/KB/IP/despop3client.aspx? Подключаюсь к почте, могу узнать количество входящих сообщений, и их заголовки и письмо на английском и размер. Если же заголовок или письмо в кирилице, то принимаем иероглифы. Это было у разработчика в оригинале
public string RETR (int msg)
        {
            string temp="";
            
            if (state != connect_state.TRANSACTION )
            {
                //the pop command RETR is only valid in the TRANSACTION state
                temp="Connection state not = TRANSACTION";
            }
            else
            {
                // retrieve mail with number mail parameter
                issue_command ("RETR "+ msg.ToString ());                
                temp=read_multi_line_response();
               
                            }
            return(temp);
 
        }
. Получает номер сообщения и начинает его принимать в темп, если я правильно понял. Погуглив думал проблема решиться с помощью декодировки. Но не могу понять как и где использовать
System.Text.Encoding.GetEncoding(1251).GetBytes (Strings)
Помогите разобраться с этим декодером. Ковырялся долг и нудно. И в разных кодировках. Кстати м ещё тот факт что письма тоже приходят в разных кодировках. В принципе это курсач - может прокатит и если тема будет на латинице и письмо на латинице, но всё таки может кто нибудь поможет.

Решение задачи: «Проблема с кодировкой входящих писем. почтовый клиент. приём почты. POP3.»

textual
Листинг программы
 private string Response()
            {
                System.Text.ASCIIEncoding oEncodedData = new System.Text.ASCIIEncoding();
                byte[] ServerBuffer = new Byte[1024];
                NetworkStream NetStream = GetStream();
                int count = 0;
                // считываем данные из сетевого потока сервера и помещаем их в буфер (чтобы потом декодировать)
                while (true)
                {
                    byte[] buff = new Byte[2];
                    int bytes = NetStream.Read(buff, 0, 1);
                    if (bytes == 1)
                    {
                        ServerBuffer[count] = buff[0];
                        count++;
                        if (buff[0] == '\n')
                        {
                            break;
                        }
                    }
                    else
                    {
                        break;
                    }
                }
                // Возвращаем декодированное строковое ASCII-значение
                string ReturnValue = oEncodedData.GetString(ServerBuffer, 0, count);                
                return ReturnValue;
            }

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


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

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

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