![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Привет, у меня возникла банальная, но в то же время распространенная проблема, которая, как оказалась, не имеет универсального решения. Суть проблемы в том, что я перевел свой проект Global Mail Sender с D7 + Indy 10 на D2009 и у меня возникли проблемы с кодировкой, приходят кракозябры, от которых я избавился на D7 + Indy 10 с использованием следующего трюка:
Код:
procedure TForm1.IdMessageInitializeISO(var VHeaderEncoding: Char; var VCharSet: string); begin VCharSet := 'windows-1251';// end; но, видимо, Indy 10, встроенный в D2009 отличается значительнее, чем мне казалось, и теперь данный трюк не помогает, может кто знает как отправить письмо, чтобы его можно было нормально прочесть ? |
#2
|
|||
|
|||
![]() Вроде, в 2009 строки уже юникодные. Тогда:
1. Попробовать указать UTF-8, UTF-16 или Unicode. 2. Принудительно перекодировать строки в Ansi. |
#3
|
||||
|
||||
![]() Некоторое время назад тоже бился с кодировкой под Indy, как оказалось в случае если имеется вложение к письму, то чихать хотел Indy на предустановки кодировки. Решения этой проблемы я так и ненашел.
А вот ваш вариант интересен, такого я непробовал. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
||||
|
||||
![]() Цитата:
1. Пробовал, некатит 2. Тоже пробовал, опять же некатит, хотя побьсь еще над этим Возможно, упустил какой-нибудь нюансик, но какой ? |
#5
|
|||
|
|||
![]() Например тот, что String теперь - это Unicode-строка.
Надо, возможно, принудительно указывать тип AnsiString. |
#6
|
||||
|
||||
![]() Цитата:
Ага, пасиб, все возможно, пересмотрю проект ![]() |
#7
|
||||
|
||||
![]() Цитата:
Не помогло, Delphi "говорит" также что AnsiString это и есть String или наоборот. A вот разница м/у Pchar и PAnsiChar действительно здесь существунная. |
#8
|
|||
|
|||
![]() Доброго времени суток!
Сам морочился очень досго с подобной проблемой в Д2006 перерыл кучу информации и пришел к правильному решению: Суть - нужно каждой части письма указывать в какой она кодировке должна быть. пример : Код:
//есть письмо IdMessageAvto : TidMessage; //содержимое: MessBody : TidText; //вложение : Attach : TIdattachmentFile; ....... // устанавливаем параметры письма with IdMessageAvto do begin ContentType := 'multipart/mixed'; CharSet := 'windows-1251'; ................. end; присоединяем содержимое : MessBody := TIdText.Create(IdMessageAvto.MessageParts, nil); MessBody.ContentType := 'text/plain; CharSet = windows-1251'; // чарсет нужно указывать именно в свойстве контенттайп по другоу не канает (проверено) MessBody.Body.Text := ' message '; Attach := TIdAttachmentFile.Create(IdMessageAvto.MessageParts,'D:\file.txt'); |
#9
|
||||
|
||||
![]() К сожалению не помогло, 2009 Delphi от 2006 отличается значительно
![]() |