Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/36: Рейтинг темы: голосов - 36, средняя оценка - 4.53
1 / 1 / 0
Регистрация: 06.11.2009
Сообщений: 17

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

06.11.2009, 00:39. Показов 7263. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Скачал класс ( прогу в коде ) POP3 стороннего разработчика для приемё писем. http://www.codeproject.com/KB/... ient.aspx? Подключаюсь к почте, могу узнать количество входящих сообщений, и их заголовки и письмо на английском и размер. Если же заголовок или письмо в кирилице, то принимаем иероглифы. Это было у разработчика в оригинале
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
 
        }
.

Получает номер сообщения и начинает его принимать в темп, если я правильно понял.
Погуглив думал проблема решиться с помощью декодировки. Но не могу понять как и где использовать
C#
1
System.Text.Encoding.GetEncoding(1251).GetBytes (Strings)
Помогите разобраться с этим декодером. Ковырялся долг и нудно. И в разных кодировках. Кстати м ещё тот факт что письма тоже приходят в разных кодировках. В принципе это курсач - может прокатит и если тема будет на латинице и письмо на латинице, но всё таки может кто нибудь поможет.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2009, 00:39
Ответы с готовыми решениями:

Почтовый клиент.POP3. Расшифровка писем с почты mail.ru
Подскажите, пожалуйста, как можно из строки (String) в которой находится текст письма зашифрованный в Base64, получить строку String (не...

Почтовый клиент. Получение писем через POP3
Собственно ниже приведен код программы, но письма не приходят, подскажите что почем? Например pop.yandex.ru, порт 995. void __fastcall...

Как сделать приём почты через POP3?
Я сделал отправку почты проге, осталось сделать приём почты через POP3. Проблема в том, что НИГДЕ нет инфы как это сделать. Кучу сайтов уже...

4
1 / 1 / 0
Регистрация: 01.03.2010
Сообщений: 26
27.04.2010, 13:57
Тоже столкнулся с проблемой кодировок. Подключаюсь к мылу, считываю кол-во сообщений новых - всё нормлаьно. А вот когда получаю список отправителей и заголовок писем вылетает ошибка. Я так подозреваю, что из-за различных кодировок писем. Код ниже:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
            string response;
            string from = null;
            string subject = null;
            int totmessages;
            try
            {
                mailclient = new TcpClient("pop3.mail.ru", 110);
            }
            catch (SocketException)
            {
                status.Text = "Unable to connect to server";
                return;
            }
            ns = mailclient.GetStream();
            sr = new StreamReader(ns);
            sw = new StreamWriter(ns);
            response = sr.ReadLine(); //Get opening POP3 banner
            sw.WriteLine("User " + "*****"); //Send username
            sw.Flush();
            response = sr.ReadLine();
            if (response.Substring(0, 3) == "-ER")
            {
                status.Text = "Unable to log into server";
                return;
            }
            sw.WriteLine("Pass " + "*****"); //Send password
            sw.Flush();
            try
            {
                response = sr.ReadLine();
            }
            catch (IOException)
            {
                status.Text = "Unable to log into server";
                return;
            }
            if (response.Substring(0, 4) == "-ERR")
            {
                status.Text = "Unable to log into server";
                return;
            }
            sw.WriteLine("stat"); //Send stat command to get number of messages
            sw.Flush();
            response = sr.ReadLine();
            string[] nummess = response.Split(' ');
            totmessages = Convert.ToInt16(nummess[1]);
            if (totmessages > 0)
            {
                status.Text = "you have " + totmessages + " messages";
            }
            else
            {
                status.Text = "You have no messages";
            }
            status.Refresh();
            for (int i = 1; i <= totmessages; i++)
            {
                sw.WriteLine("top " + i + " 0"); //read header of each message
                sw.Flush();
                response = sr.ReadLine();
                while (true)
                {
                    if (response == ".")
                        break;
                    if (response.Length > 4)
                    {
                        if (response.Substring(0, 5) == "From:")
                            from = response;
                        if (response.Substring(0, 8) == "Subject:")         // тут вылетает ошибка. в response хранится "q=dns", хотя реальная тема письма - другая.
                            subject = response;
                    }
                }
                messages.Items.Add(i + " " + from + " " + subject);
                messages.SelectedIndex = messages.Items.Count - 1;
                messages.Refresh();
            }
0
3 / 3 / 1
Регистрация: 15.01.2010
Сообщений: 23
19.02.2011, 23:11
sr = new StreamReader(ns);
sw = new StreamWriter(ns);


измени на:

sr = new StreamReader(ns, Encoding.GetEncoding("koi8-r"));
sw = new StreamWriter(ns, Encoding.GetEncoding("koi8-r"));





KOHCTAHTNH,
попробуй так:
System.Text.Encoding.GetEncoding("koi8-r").GetBytes

проблема в том, что нужно задавать не номер кодовой таблицы а название.
Для русского языка подходит "koi8-r",
для украинского "koi8-u"
1
0 / 0 / 0
Регистрация: 04.04.2011
Сообщений: 18
04.04.2011, 00:58
Столкнулся с такой же проблемой, подскажите как задать кодировку в таком случае:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 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;
            }
0
hanip
03.08.2011, 10:48
Кому нибудь удалось получить письмо на русском языку, выложите пример перекодировки.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2011, 10:48
Помогаю со студенческими работами здесь

Перенос входящих писем из Оутлук на почтовый сервер
Настроил Microsoft Outlook 2007 на работу с ящиком мэил.ру. После запуска программа приняла все письма с сервера мэил.ру и почистила...

Почтовый клиент по POP3 протоколу
Добрый день! Я пытаюсь разобраться как сделать получение писем в почте, но столкнулся с проблемой. MessageCount = ...

Простейший почтовый клиент POP3 на С++
Уважаемый форумчане, мне нужна программа, которая выдает количество писем на почтовом ящике с помощью протокола POP3. Другими словами,...

SMTP,POP3,IMAP Почтовый клиент
Во общем smtp клиентское приложение должно отправлять письма на сервер(насколько я понял)а с этого сервера письмо уже будет отправлено...

Приём писем с почты
Здравствуйте! С отправкой писем проблем не возникло, а вот инструкий по получению писем я не нашёл. Цель: принимать письма, после чего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru