Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2007, 09:18   #1
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Вопрос Кодировка писем

Доброго времени суток!

Как получать и отправлять почту уже известно, но вот есть такие письма у которых "плохая" кодировка, например, у Рассылки@mail.ru, в принципе текст самого письма можно запихнуть в WebBrowser, то некоторый письма будут читаться правильно, а некоторые нет, из-за недостоющих тегов <meta>. Ну допустим, можно их дописать в нужном месте нужным алгоритмом, остаётся вопрос, КАК ПРАВИЛЬНО ОТОБРАЗИТЬ ТЕМУ ПИСЬМА, ведь тема, тоже в этой же кодировке.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 04.12.2007, 10:22   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

какие нафик meta в письме ? рассуждаем логически:
в каких 2-х местах письма указываются кодировки ?
Переводим оба этих места на нгицкий, переводим кодировку на англицкий и лезем в IndyMisc и о чудо...
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 04.12.2007, 12:02   #3
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
какие нафик meta в письме ? рассуждаем логически:
в каких 2-х местах письма указываются кодировки ?
Переводим оба этих места на нгицкий, переводим кодировку на англицкий и лезем в IndyMisc и о чудо...

На счёт Meta:

Приходят такие письма:

Цитата:
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset=koi8-r

<HTML>
....
Но WebBrowser не понимает этот текст и игнорирует его, т.е. кодировка не срабатывает и этот текст просто напросто выводится в текст письма,
но если написать:

Цитата:
<meta Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset=koi8-r>

<HTML>
....
То WebBrowser поймёт и примет кодировку, и выведет нормальный текст...

P.S. Чо то я не понял о чём ты писал в предыдущем сообщении, расшифруй пожалуйста.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 04.12.2007, 12:26   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

А каео отношение Webbrowser имеет к почте ? )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 04.12.2007, 12:47   #5
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
А каео отношение Webbrowser имеет к почте ? )
А как ты просмотришь текст письма?

Через Memo?

Тогда смотри какие письма приходят (например от того же mail.ru):

Цитата:
src="http://top.list.ru/counter?id=462302;t=1" border=0 height=1 width=1 alt=""><b>уМХЦВБ ТБУУЩМПЛ &quot;<a href="http://content.mail.ru/">тБУУЩМЛЙ@Mail.Ru</a>&quot
<hr noshade size=2>
Memo не отображает текст согласно заданной кодировки, а когда переводишь текст в WebBrowser он норм. отображает.

Только этим WebBrowser касается почты.

Дак всё же в первом письме что-то говорилось о компонентах Indy? Что именно?
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 06.12.2007, 15:32   #6
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
Радость

Ладно с текстом письма можно разобраться, но вот есть письмо с такой темой:
=?koi8-r?B?68nOz+vBxNI6INPSxcTBLCAwNSDExcv BwtLR?=

как можно преобразовать эту строку в русский текст, а то так чуть-чуть не понятно о чём хотели написать?

Может быть в Memo можно это как-то организовать? Я где-то непомню где читал о том, что можно с помощь Memo перекодировать текст, но не обратил внимания на это. Если кто знает как или хотя бы какие-нибудь ссылки, плиз напишите.
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 06.12.2007, 20:47   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
какие нафик meta в письме ?
Если я правильно понял, имеется в виду рассылка, заказанная не в TXT виде, а в HTML (я, например, всегда так заказываю). В этом случае письмо представляет собой НТМL-файл со всеми вытекающими...
Проблема, описываемая автором топика в том, что SUBJECT (тема письма) находится вне этого HTML-кода и определить его кодировку бывает действительно очень трудно.

Последний раз редактировалось mihali4; 07.12.2007 в 01:17.
mihali4 вне форума Ответить с цитированием
Старый 06.12.2007, 21:05   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Subject Описывается headers-письма, и декодируется с помощью Indy , тело письма можно декодировать внутренними алгоритмами, коих куча и на форуме нашем в том числе
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.12.2007, 22:59   #9
NoName_emaNoN
Форумчанин
 
Аватар для NoName_emaNoN
 
Регистрация: 15.11.2007
Сообщений: 229
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
Subject Описывается headers-письма, и декодируется с помощью Indy , тело письма можно декодировать внутренними алгоритмами, коих куча и на форуме нашем в том числе
Какими ещё алгоритмами декодировать?
На форуме я искал правда только по получ. почты, там на счёт кодировки письма ничё не встречал, попробую поискать и по кодировке текста.

Кстати mihali4 абсолютно прав!
Компьютер не подчиняется законам физики: глюки возникают из ниоткуда, файлы исчезают в никуда, а вес измеряется в метрах.
NoName_emaNoN вне форума Ответить с цитированием
Старый 07.12.2007, 04:28   #10
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

надо перекодировать из KOI-8 в WIN кодировку... вот тебе код для этого

Код:
const

Koi: array[0..66] of Char = (
'T', 'Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');

Win: array[0..66] of Char = (
'ё', 'Ё', 'T', 'ю', 'а', 'б', 'ц', 'д', 'е', 'ф',
'г', 'х', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
'я', 'р', 'с', 'т', 'у', 'ж', 'в', 'ь', 'ы', 'з',
'ш', 'э', 'щ', 'ч', 'ъ', 'Ю', 'А', 'Б', 'Ц', 'Д',
'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н',
'О', 'П', 'Я', 'Р', 'С', 'Т', 'У', 'Ж', 'В', 'Ь',
'Ы', 'З', 'Ш', 'Э', 'Щ', 'Ч', 'Ъ');


function WinToKoi(Str: string): string;
var
  i, j, index: Integer;
begin
  Result := '';

  for i := 1 to Length(Str) do
  begin
    index := -1;
    for j := Low(Win) to High(Win) do
      if Win[j] = Str[i] then
      begin
        index := j;
        Break;
      end;

    if index = -1 then
      Result := Result + Str[i]
    else
      Result := Result + Koi[index];
  end;
end;

function KoiToWin(Str: string): string;
var
  i, j, index: Integer;
begin
  Result := '';

  for i := 1 to Length(Str) do
  begin
    index := -1;
    for j := Low(Win) to High(Win) do
      if Koi[j] = Str[i] then
      begin
        index := j;
        Break;
      end;

    if index = -1 then
      Result := Result + Str[i]
    else
      Result := Result + Win[index];
  end;
end;


procedure SendFileOnSMTP(Host: string; Port: Integer;
Subject, FromAddress, ToAddress, Body, FileName: string);
var
  NMSMTP: TNMSMTP;
begin
  if DelSpace(ToAddress) = '' then
    Exit;
  if ToAddress[1] = '' then
    Exit;

  if (DelSpace(FileName) <> '') and not FileExists(FileName) then
    raise Exception.Create('SendFileOnSMTP: file not exist: ' + FileName);

  NMSMTP := TNMSMTP.Create(nil);
  try
    NMSMTP.Host := Host;
    NMSMTP.Port := Port;
    NMSMTP.Charset := 'koi8-r'
    NMSMTP.PostMessage.FromAddress := FromAddress;
    NMSMTP.PostMessage.ToAddress.Text := ToAddress;
    NMSMTP.PostMessage.Attachments.Text := FileName;
    NMSMTP.PostMessage.Subject := Subject;
    NMSMTP.PostMessage.Date := DateTimeToStr(Now);
    NMSMTP.UserID := 'netmaster'
    NMSMTP.PostMessage.Body.Text := WinToKoi(Body);
    NMSMTP.FinalHeader.Clear;
    NMSMTP.TimeOut := 5000;
    NMSMTP.Connect;
    NMSMTP.SendMail;
    NMSMTP.Disconnect;
  finally
    NMSMTP.Free;
  end;
end;
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с кодировкой писем Черничный Win Api 7 16.06.2008 12:19
Microsoft Office Outlook Событие автоматической отправки писем из папки Исходящие при появлении интернета fandm Софт 0 23.04.2008 10:15
MS Excel и MS Outlook (2003) отсылка писем IceB Microsoft Office Excel 1 02.07.2007 13:32
Microsoft Office Outlook : отправка писем gaybiza Софт 1 18.11.2006 00:14