Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  08:31[Войти] | [Зарегистрироваться]
Ответ на вопрос № 31478

05-05-2005 02:50
Здравствуйте, уважаемые! И снова вопрос про почту, Indy и кодировку. Ситуация следующая: использую компоненты Indy для отправки \ получения почты. Вроде все работает, но при получении, виесто читаемого русского текста, как в теле пиьсма, так и в заголовке, вижу одни крокозябры. Я понимаю, что дело в кодировке и ее нужно как-то менять. Но как? Может кто поделится?

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

31-01-2006 05:02 | Сообщение от автора вопроса
Промучившись с Indy, я, в конце-концов, отказался от нее и стал использовать библиотеку synapse. Там все довольно просто и понятно. Есть удобоваримый хелп и, самое главное, нет проблем с кодировкой. Если кому надо, библиотеку можно скачать с сайта http://www.ararat.cz/synapse/ Библиотека freeware.

31-01-2006 02:10 | Вопрос к автору: запрос дополнительной информации
Константин! Не было ли у Вас ситуации, когда необходимо было отправить письмо с телом в виде HTML и плюс вложение? Когда я отправляю просто тело, все прекрасно и красиво. Когда подключаю вложение, тело превращается в текст (HTML код). Похоже все дело в ContentType.

30-01-2006 16:55
Я решил эту проблему так (Delphi 7, Indy 10.0 52, старые Indy 9 убрать):

1.
Надо написать обработчик события OnInitializeISO:
procedure SMTP_Thread.MyInitializeISO(var VTransferHeader: TTransfer;
  var VHeaderEncoding: Char; var VCharSet: String);
begin
    VCharSet:='windows-1251';
    VTransferHeader := bit8;
    VHeaderEncoding := 'B';
end;

И подправить файлик IdMessageClient.
Чтобы не мучится и не перекомпилировать инсталляцию, просто скопировать его в папку с программой, вот он и будет использоваться.
Правим внутр. процедуру

  procedure WriteTextPart(ATextPart: TIdText);
  var
    LData: string;
    LDestStream: TIdStream;
    LStrStream: TIdStreamVCL;
    LBodyLine: String;
    i: Integer;
  begin
    if ATextPart.ContentType = '' then begin
      ATextPart.ContentType := 'text/plain'; {do not localize}
    end;
    if ATextPart.ContentTransfer = '' then begin
      ATextPart.ContentTransfer := 'quoted-printable'; {do not localize}
    end;
/////////////////////// А ЭТО ДОБАВИЛИ start
    if ATextPart.CharSet = '' then begin
      ATextPart.CharSet := ISOCharSet; {do not localize}
    end;
/////////////////////// А ЭТО ДОБАВИЛИ end


    IOHandler.WriteLn(GenerateTextPartContentType(ATextPart.ContentType, ATextPart.CharSet));
........


05-05-2005 08:18 | Сообщение от автора вопроса
Константин, этот код правильно сформирует кодировку при отправке. Если же, к примеру, приходит письмо в кодировке KOI8-R, то, боюсь, будет видна абра-кодабра. Вот здесь и возникает вопрос: как конвертнуть KOI8-R (или другую кодировку) в windows-1251.

05-05-2005 07:40
У сообщения TIdMessage есть свойства ContentType, ContentTransferEncoding. Следует установить им правильные значения. Например:


Body.Text := 'Текст сообщения';
ContentType := 'text/plain; charset=windows-1251';



Лично у меня была проблема с кодировкой при отправке multipart сообщения с вложением через TIdSMTP, TIdMessage. Есть следующее решение.

Блок собственно заполениия сообщения:


IdMessage := TIdMessage.Create( nil );
with IDMessage do begin
  ...
  OnInitializeISO := MailSetCharset;
  with TIdText.Create( MessageParts ) do
  begin
    Body.Text := 'Текст сообщения';
    ContentType := 'text/plain; charset=windows-1251';
  end;
  with TIdText.Create( MessageParts ) do
  begin
    Body.Text := '<h1>Текст сообщения html</h1>';
    ContentType := 'text/html; charset=windows-1251';
  end;
  ...
end;



Ну и дальше

IdSMTP.SendMessage( IdMessage );



Собственно установка Content-Type обеспечивает правильную кодировку частей сообщения.
А вот обработчик MailSetCharset нужен для правильной кодировки заголовков сообщения.

Вот его код:


procedure TFormMain.MailSetCharset(var VTransferHeader: TTransfer;
  var VHeaderEncoding: Char; var VCharSet: string);
begin
  // это нужно для корректного кодирования заголовков
  VHeaderEncoding := 'B';
  VCharSet := 'windows-1251';
end;




Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Вода мокрая или сухая?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования