idpop3控件问题(50分)

  • 主题发起人 主题发起人 Delphi_1.0
  • 开始时间 开始时间
D

Delphi_1.0

Unregistered / Unconfirmed
GUEST, unregistred user!
1.如何得到邮件大小,制作进度条?
2.如果信件标题中有汉字,回收下来乱码,如何解决?


不改用其他控件。
 
我机器上没有Delphi,所以第一个问题,你仔细看一下他的属性,应该有
第二个,需要修改一下IdCoderHeader.pas单元
直接搜索字符串"=?ISO"
在encodingstartpos:=PosStartAt('=?ISO', UpperCase(Header),1);后面加上一句
if encodingstartpos = 0 then
encodingstartpos:=PosStartAt('=?GB2312', UpperCase(Header),1);
重新编译Indy包就可以了
 
twos:我的delphi是6.0,在idcoderheader.pas中没有找到你所的代码,有一段相似:
if Pos('=?ISO', UpperCase(Header)) > 0 then
begin
for i := 1 to 3 do
begin
l := Pos('?', Header);
Header := Copy(Header, l + 1, Length(Header) - l + 1);
if i = 1 then
HeaderCharSet := Copy(Header, 1, Pos('?', Header) - 1)
else
if i = 2 then
HeaderEncoding := Header[1];
end;
if AnsiSameText(HeaderEncoding, 'Q') then
begin
i := 1;
repeat
if Header = '_' then
s := s + ' '
else
if Header = '=' then
begin
s := s + chr(StrToInt('$' + Header[i + 1] + Header[i + 2]));
inc(i, 2);
end
else
s := s + Header;
inc(i);
until (Header = '?') and (Header[i + 1] = '=')
end
else
begin
while Length(Header) >= 4 do
begin
a4[1] := b64(Header[1]);
a4[2] := b64(Header[2]);
a4[3] := b64(Header[3]);
a4[4] := b64(Header[4]);
a3[1] := (a4[1] shl 2) or (a4[2] shr 4);
a3[2] := (a4[2] shl 4) or (a4[3] shr 2);
a3[3] := (a4[3] shl 6) or (a4[4] shr 0);
Header := Copy(Header, 5, Length(Header));
s := s + CHR(a3[1]) + CHR(a3[2]) + CHR(a3[3]);
end;
end;

if AnsiSameText(HeaderCharSet, 'ISO-2022-JP') then
result := Decode2022JP(s)
else
Result := s;
end
else
Result := Header;

但不知怎样改??
 
up too[:D][:D][:(][:(][:(!]
 
后退
顶部