Форум: "Сети";
Текущий архив: 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