Главная страница
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.034 c
2-1162229245
dreamse
2006-10-30 20:27
2006.11.19
Подскажите компонент в котором реализована бегущая строка


15-1161393307
Gero
2006-10-21 05:15
2006.11.19
Новая версия DMClient, клиента для этого форума


15-1162189017
TUser
2006-10-30 09:16
2006.11.19
Простые числа


1-1160032506
DVM
2006-10-05 11:15
2006.11.19
OnShow у TFrame как сделать?


2-1162460306
проходил мимо решил заглянуть
2006-11-02 12:38
2006.11.19
Ошибки конвертации