Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Вниз

получить письмо в windows1251    Найти похожие ветки 

 
XAOC ©   (2008-03-26 15:46) [0]

как получить читабельное письмо отправленное из Outlook"a (KOI8-R)  ?
компонентами indy 10


 
Reindeer Moss Eater ©   (2008-03-26 16:07) [1]

получить ?
или
получив кои8р перекодировать в читабельный 1251?


 
XAOC ©   (2008-03-26 16:17) [2]

письмо я получаю, а вот по-русски не читается


IdPOP31.Password:=EditPassword.Text;
IdMessage1.Clear;

try
 IdPOP31.Connect;
 Memo1.Clear; Memo2.Clear;
 IdPOP31.Retrieve(1,IdMessage1);
 Label14.Caption := "From: "          + IdMessage1.From.Text;
 Label15.Caption := "Recepients: "        + IdMessage1.Recipients.EmailAddresses;
 Label17.Caption := "Subject: "        + IdMessage1.Subject;
 Memo1.Lines.AddStrings(IdMessage1.Body);
finally
 IdPOP31.Disconnect;
end;


 
XAOC ©   (2008-03-26 16:19) [3]

кстати, то что я отсылаю - в аутлуке тоже не читается


 
Reindeer Moss Eater ©   (2008-03-26 16:19) [4]

ну все верно. кодировка-то у него koi8-r


 
XAOC ©   (2008-03-26 16:24) [5]

пробовал
Memo2.Lines:= (IdMessage1.MessageParts.Items[0] as TIdText).Body
пишет что не знает TIdText

пробовал IdMessageDecoderMIME и IdDecoderMIME использовать. обругался на потоки. и мануала на него нет.


 
Reindeer Moss Eater ©   (2008-03-26 16:38) [6]

И при чем здесь майм?
Ты еще монитор попробуй протереть. Вдруг проканает.
Ответ уже есть в [1]


 
Reindeer Moss Eater ©   (2008-03-26 16:43) [7]

Для начала откуси старший бит у каждого символа в теле письма.
Если после этого увидишь транслит - ищи функцию перекодировки кои8r в вин-1251.


 
XAOC ©   (2008-03-26 16:56) [8]

ммм...
в общем так. стояла у меня indy 9 стандартная. с кодом

Memo1.Lines.AddStrings(IdMessage1.Body);
Memo2.Lines:= (IdMessage1.MessageParts.Items[0] as TIdText).Body
Memo3.Lines:= (IdMessage1.MessageParts.Items[1] as TIdText).Body

получаю в
memo1 - This is a multi-part message in MIME format.
memo2 - йОПЧИЧОПЧИ (что-то типа этого )))
memo3 - KOI8-R
но при этом в Outlook"e писмо высланное из моей проги читалось.

теперь поставил indy 10
ругается на TIdText. в Uses "IdMessage" прописано. ХЗ думаю. лезу смотреть, а там и нету TIdText. вот.
теперь в outlook"e своего письма прочитать не могу
         и из своей проги Outlook"овое письо не могу прочесть


 
MedEx   (2008-07-29 16:45) [9]

AnsiString s,SKoi,SWin,N,C;
   SKoi="__ёАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя";
   SWin="ёЁTюабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ";
   int k=0;

for(int j=1;j<=s.Length();j++)
              {
                 C=s[j];
                 k=AnsiPos(C,SKoi);
                 if(k==0)
                    {
                       N+=s[j];
                    }
                 else N+=SWin[k];
              }

   Memo1->Lines->Add(N);

в мемо строка (s) переданная в формате koi8r,записывается (N) в win1251


 
Сергей М. ©   (2008-07-29 20:11) [10]


> XAOC


У 10-х индейцев есть изящный интерфейс подключения любого кодека)


 
a.a.j. ©   (2008-07-31 09:50) [11]

var
 M: TIdMessage;
...
 M := TIdMessage.Create(Form1);
 M.CharSet := "windows-1251";
...
 if IdSMTP1.Connected then
 begin
   IdSMTP1.Send(M);
 end;


?


 
Anatoly Podgoretsky ©   (2008-07-31 10:26) [12]

Получить это никак не send


 
Сергей М. ©   (2008-07-31 11:40) [13]


>  M.CharSet := "windows-1251";


windows-1251 - это ни разу ни KOI8-R


 
yarik1980 ©   (2008-11-28 14:41) [14]

В 10 indy пришлось пойти таким путем (это для текста который в теле письма):
function trans(str:string):string;
 var qwe:TOracleQuery;
begin
 qwe:= TOracleQuery.Create(self);
 qwe.SQL.Text:= "SELECT translate(:str, ""ёЁTюабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"", ""__ёАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"") res FROM dual";
 qwe.DeclareVariable("str", otString);
 qwe.Session:=fmMainForm.OraSession;
 qwe.SetVariable("str", str);
 try
  qwe.Execute;
  result:=qwe.FieldAsString("res");
 except
   result:=str;
 end;
 qwe.Free;
end;


 
Сергей М. ©   (2008-11-28 14:53) [15]


> В 10 indy пришлось пойти таким путем


Кулибин)


unit MsgHdrCoders;

interface

uses
 IdHeaderCoderPlain;

type
 TCodeMatrix = array[1..255] of char;

const
 FirstCodes =
   #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28+
  #29#30#31" !"#$%&""()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^" +
   "_`abcdefghijklmnopqrstuvwxyz{|}~";
 cmAnsiToKoi8R: TCodeMatrix = FirstCodes
 + "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·Ј—є»јЅѕїбвчздецъй"
   + "клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС";
 cmAnsiToKoi8U: TCodeMatrix = FirstCodes
 + "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—?™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·Ј—є»јЅѕїбвчздецъй"
   + "клмнопртуфхжигюыэящшьасБВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС";
 cmKoi8RToAnsi: TCodeMatrix = FirstCodes
 + "-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёг㬬¬LLL---¦¦¦¦Ё¦¦TTT¦¦¦+++©юабцдефгх"
   + "ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ";
 cmKoi8UToAnsi: TCodeMatrix = FirstCodes
 + "-¦-¬L-++T++---¦¦---?¦•v??? ?°?·?=¦-ёєгії¬LLL-ґў¦¦¦¦ЁЄ¦ІЇT¦¦¦+ҐЎ©юабцдефгх"
   + "ийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ";
 cmOemDosToAnsi: TCodeMatrix = FirstCodes
 + "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп---¦+¦¦¬¬¦¦¬---¬L+T+-+¦¦L"
   + "г¦T¦=+¦¦TTLL-г++----¦¦-рстуфхцчшщъыьэюяЁёЄєЇїЎў°•·v№¤¦ ";
 cmIsoToAnsi: TCodeMatrix = FirstCodes
 + "???????????????????????????????? ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШ"
   + "ЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ";
type

 TIdHeaderCoderKOI8 = class(TIdHeaderCoderPlain)
 public
   class function Decode(const ACharSet, AData: String): String; override;
   class function Encode(const ACharSet, AData: String): String; override;
   class function CanHandle(const ACharSet: String): Boolean; override;
 end;

function ConvertCharset(AString: String; AMatrix: TCodeMatrix): String;

implementation

uses IdGlobal, IdHeaderCoderBase;

function ConvertCharset(AString: String; AMatrix: TCodeMatrix): String;
var
 i: Integer;
begin
 Result := "";
 for i:= 1 to Length(AString) do
   Result := Result + AMatrix[Ord(AString[i])];
end;

{ TIdHeaderCoderKOI8 }

class function TIdHeaderCoderKOI8.CanHandle(const ACharSet: String): Boolean;
begin
 Result := TextIsSame(ACharSet, "KOI8-R") or TextIsSame(ACharSet, "KOI8-U");
end;

class function TIdHeaderCoderKOI8.Decode(const ACharSet, AData: String): String;
begin
 if TextIsSame(ACharSet, "KOI8-R") then
   Result := ConvertCharset(AData, cmKoi8RToAnsi)
 else if TextIsSame(ACharSet, "KOI8-U") then
   Result := ConvertCharset(AData, cmKoi8UToAnsi);
end;

class function TIdHeaderCoderKOI8.Encode(const ACharSet, AData: String): String;
begin
 if TextIsSame(ACharSet, "KOI8-R") then
   Result := ConvertCharset(AData, cmAnsiToKoi8R)
 else if TextIsSame(ACharSet, "KOI8-U") then
   Result := ConvertCharset(AData, cmAnsiToKoi8U);
end;

initialization
 RegisterHeaderCoder(TIdHeaderCoderKOI8);
finalization
 UnregisterHeaderCoder(TIdHeaderCoderKOI8);
end.


 
имя   (2009-07-04 22:44) [16]

Удалено модератором



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

Форум: "Сети";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
15-1312810075
Leon-Z
2011-08-08 17:27
2011.12.04
Компоненты DB.


2-1312296516
Foma
2011-08-02 18:48
2011.12.04
TIdMultiPartFormDataStream и русский текст


1-1276083003
Омлет
2010-06-09 15:30
2011.12.04
TDateTimePicker - ввод максимальной даты с клавиатуры


2-1313206942
Gu
2011-08-13 07:42
2011.12.04
Запуск от имени администратора


2-1313414426
TComponent
2011-08-15 17:20
2011.12.04
Использование курсора для навигации по страницам в TWebBrwser-e





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский