Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 522

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Работал на Delphi 7 сейчас перешел на delphi 2010.
Пишу почтовый клиент - на семерке работал прекрасно но на 10 сплошные разочарования - причем с кодировкой текста.
Код стандартный -прием

 IdSmtp1.Host:= 'smtp.mail.ru';
     IdSmtp1.Port := 25;
     idSmtp1.Username := '';
     idSmtp1.Password := '';
 
     IdMessage1.ContentType:='text/plain'; // Письмо в текстовом виде
     idMessage1.Body.Text := Memo1.Text;
     idMessage1.From.Text :='';
     idMessage1.Recipients.EMailAddresses := '';
     idMessage1.Subject := 'Тест';
     idSmtp1.Connect;
     if idSmtp1.Connected = TRUE then
     idSmtp1.Send(idMessage1);
     idSmtp1.Disconnect();
В этом коде получилось исправить крокозябры приходящие в почтовый ящик вот так:
IdMessage1.CharSet := 'UTF-8';
     IdMessage1.ContentTransferEncoding := '8bit';
Но прием почты
 var
  mailcicl,i:integer; // счётчик получаемых писем
  addr:string; // папка в которой будут сохраняться получаемые письма
begin
   POP3.Host:='pop.mail.ru'; // адрес почтового сервера
   POP3.Port:=110; // порт по которому будет осуществляться подключение
   POP3.Username:=''; // Логин пользователя
   POP3.Password:='; // пароль пользователя
   addr:=ExtractFilePath(Application.ExeName); // получения адреса папки, в которой находиться наша программа
   POP3.Connect; // подключение к серверу
   Memo1.Clear; // очистка компонента memo для отображения текста письма.
   IdMessage.Clear; // очистка буфера для сообщения
   for mailcicl := 1 to 10 do
    begin
   POP3.Retrieve(1,IdMessage); // получение одного сообщения
   Memo1.Lines.AddStrings(IdMessage.Body);
   POP3.Delete(mailcicl);
   if POP3.CheckMessages<1 then Break;
   end;
  POP3.Disconnect; // разрыв соединения с сервером
уже бьюсь всю неделю весь интернет излазил - ни чего хотя подобных вопросов без ответов полно.Так вот в свою программу получаю письма в виде Daciauaiiia niiauaiea:
***************
iinoaauoa eiae?iaeo
&#208;&#376;&#209;?&#208;&#184;&#208;&#178;&#208;µ&#209;‚ И все началось с приходом indi 10

igoriy Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: igoriy (статус: Посетитель)
Вопрос отправлен: 21 августа 2010, 16:38
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 21 августа 2010, 18:54; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 21 августа 2010, 17:46 [#1]:

Потому что юникод. Это ответ на все ваши страдания. В 2010 используется только он. Что ожидает идни - одной ей известно, но скорее всего старый Ansi.
и вот эти строки
IdMessage1.CharSet := 'UTF-8';
IdMessage1.ContentTransferEncoding := '8bit';
подтверждают это.
А вот прием почты - это всегда проблема с кодировкой. Нужно знать, в какой кодировке она приходит и правильно подставить.
Галочка "подтверждения прочтения" - вселенское зло.
igoriy

igoriy (статус: Посетитель), 21 августа 2010, 18:08 [#2]:

Но в Delphi 7 как то это определялось?Так как специально ничего не дополнял и все письма получал в нормальной кодировке
Вадим К

Вадим К (статус: Академик), 21 августа 2010, 18:54 [#3]:

Все? не думаю.
Попробуйте начать с того, что бы применять вместо String тип AnsiString - это строка "старого" образца, может и поможет.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 28 марта 2023, 14:32
Выполнено за 0.03 сек.
Рейтинг@Mail.ru