| 
| 
 | Вопрос # 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
 ПÑ?ивет И все началось с приходом indi 10
 
|  |   Вопрос задал: 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 (статус: Посетитель), 21 августа 2010, 18:08 [#2]:Но в Delphi 7 как то это определялось?Так как специально ничего не дополнял и все письма получал в нормальной кодировке |  
|   | Вадим К (статус: Академик), 21 августа 2010, 18:54 [#3]:Все? не думаю. Попробуйте начать с того, что бы применять вместо String тип AnsiString - это строка "старого" образца, может и поможет.
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |