Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.19;
Скачать: CL | DM;

Вниз

Проблема с кодировкой в indySMTP   Найти похожие ветки 

 
nikitian ©   (2006-05-30 03:55) [0]

Господа знатоки!
В indySMTP при отправке теам письма ставится в кодировке iso и становится абсолютно нечитаема. Кто работал с indy - как лечить? Использую indy6, может в 9 версии баг пофиксен?
Помогите, пожалуйста - очень сильно поджимают сроки!


 
umbra ©   (2006-05-30 09:57) [1]

это не баг, это протокол передачи почты. а что написано в заголовке в поле Subject?


 
nikitian ©   (2006-05-30 15:15) [2]

Вот примерно такая хрень: "Êàê äåëà?"
Баг в том, что я ставлю Charset в windows-1251, а заголовок на это плевать хотел.
Может в indy 9 нет такого? Не пробовали?


 
umbra ©   (2006-05-30 16:04) [3]


> Баг в том, что я ставлю Charset в windows-1251
> Может в indy 9 нет такого? Не пробовали?
>

есть. это не баг. Charset выставляется для тела сообщения, а поле Subject относится к заголовку. А он, согласно протоколу, может содержать только печатные символы с кодами < 128 (за исключением пробела, ?, а в некоторых случаях и других символов). Т.е. со 100% гарантаей там могут быть только латинские буквы и цифры


> "&#202;&#224;&#234; &#228;&#229;&#235;&#224;?"

чтобы почтовый клиент правильно отобразил тему на русском языке, в поле заголовка Subject должно стоять что-то вроде

=?(кодировка)?(способ кодирования)?(кодированная фраза)?=

здесь "=" - метка начала и конца содержимого поля, "?" - разделитель
"кодировка" - кодовая таблица (windows-1251, koi8-r и т.д.)
"способ кодирования" - способ представления. Есть 2 способа, один
   обозначается буквой "В" (латинской) и представляет собой кодирование по  
   алгоритму Base64, другой - буквой "Q" - кодирование по алгоритму
   Quoted-Printable.
(кодированная фраза) - собственно тема, которая была введена в кодовой таблице (кодировка) и преобразована согласно способу кодирования.

Т.е. если тема письма "Это тема письма", то чтобы после получения письма она выглядела нормально, в поле заголовка сообщения должно стоять

=?windows-1251?B?3fLuIPLl7OAg7+jx/Ozg?=


Все это в больших подробностях описано в RFC 2047
Уф, наконец то я сам разобрался с этим вопросом. :)


 
nikitian ©   (2006-05-30 20:52) [4]

Огромное спасибо за такой развёрнутый ответ!


 
Dust ©   (2006-06-29 11:37) [5]

угу, пасиб, улыбнуло
только это ещё невсё
subj := "Ащипка";
amsg.Subject := "=?windows-1251?B?"+MimeEncodeStringNoCRLF(subj)+"?=";

получаем письмо, где
Subject: =?KOI8-R?B?PT93aW5kb3dzLTEyNTE/Qj93UG5vNytyZz89?=
------
MimeDecodeString("=?KOI8-R?B?PT93aW5kb3dzLTEyNTE/Qj93UG5vNytyZz89?=")=
=?windows-1251?B?wPno7+rg?=


 
Dust ©   (2006-06-29 11:42) [6]

А, собственно вопрос - как заставить idMessage снова не перекодировать заголовок


 
Dust ©   (2006-06-29 15:46) [7]

Млин, неуж-то никто не разбирался?


 
Eraser ©   (2006-06-29 17:48) [8]

> [7] Dust ©   (29.06.06 15:46)

поищи в "прочее", примерно неделю назад обсуждали эту тему.


 
Dust ©   (2006-06-30 16:06) [9]

Либо я не то нашёл, либо эта проблем так и не была решена там.



Страницы: 1 вся ветка

Текущий архив: 2006.11.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.052 c
15-1162403333
Ketmar
2006-11-01 20:48
2006.11.19
как молиться?


2-1162438667
Merry
2006-11-02 06:37
2006.11.19
Формат даты


2-1162356010
APiC
2006-11-01 07:40
2006.11.19
Регистрация расширений


8-1141656784
Belorus
2006-03-06 17:53
2006.11.19
Медиа плеер.


2-1162472187
Sergey_b
2006-11-02 15:56
2006.11.19
SELECT, UPDATE, INSERT