谁有邮件内容解码函数MimeDecodeString吗!我给100分!!!

shenxp_2002 2002-03-06 02:34:15
我做了个邮件收发程序,在用这个程序发送和接收没问题,但用OutLook发送后(uft-8格式),用这个程序接收有邮件内容部分乱码现象。经调试后发现是调用MimeDecodeString函数解码后,开始出现乱码现象。这个MimeDecodeString函数是我网上下载的,我怀疑有问题。你有这个函数吗???我的Eamil是shenxp2002@163.com,
...全文
40 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxsuy 2002-04-30
  • 打赏
  • 举报
回复
2323
alittlefrag 2002-04-04
  • 打赏
  • 举报
回复
const
BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
......
function FindInTable(CSource:char):integer;


begin


result:=Pos(string(CSource),BaseTable)-1;


end;



function DecodeBase64(Source:string):string;


var


SrcLen,Times,i:integer;


x1,x2,x3,x4,xt:byte;


begin


result:='';


SrcLen:=Length(Source);


Times:=SrcLen div 4;


for i:=0 to Times-1 do


begin


x1:=FindInTable(Source[1+i*4]);


x2:=FindInTable(Source[2+i*4]);


x3:=FindInTable(Source[3+i*4]);


x4:=FindInTable(Source[4+i*4]);


x1:=x1 shl 2;


xt:=x2 shr 4;


x1:=x1 or xt;


x2:=x2 shl 4;


result:=result+chr(x1);


if x3= 64 then break;


xt:=x3 shr 2;


x2:=x2 or xt;


x3:=x3 shl 6;


result:=result+chr(x2);


if x4=64 then break;


x3:=x3 or x4;


result:=result+chr(x3);


end;


end;




//Base64±àÂë·½·¨


function EncodeBase64(Source:string):string;


var


Times,LenSrc,i:integer;


x1,x2,x3,x4:char;


xt:byte;


begin


result:='';


LenSrc:=length(Source);


if LenSrc mod 3 =0 then Times:=LenSrc div 3


else Times:=LenSrc div 3 + 1;


for i:=0 to times-1 do


begin


if LenSrc >= (3+i*3) then


begin


x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];


xt:=(ord(Source[1+i*3]) shl 4) and 48;


xt:=xt or (ord(Source[2+i*3]) shr 4);


x2:=BaseTable[xt+1];


xt:=(Ord(Source[2+i*3]) shl 2) and 60;


xt:=xt or (ord(Source[3+i*3]) shr 6);


x3:=BaseTable[xt+1];


xt:=(ord(Source[3+i*3]) and 63);


x4:=BaseTable[xt+1];


end


else if LenSrc>=(2+i*3) then


begin


x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];


xt:=(ord(Source[1+i*3]) shl 4) and 48;


xt:=xt or (ord(Source[2+i*3]) shr 4);


x2:=BaseTable[xt+1];


xt:=(ord(Source[2+i*3]) shl 2) and 60;


x3:=BaseTable[xt+1];


x4:='=';


end else


begin


x1:=BaseTable[(ord(Source[1+i*3]) shr 2)+1];


xt:=(ord(Source[1+i*3]) shl 4) and 48;


x2:=BaseTable[xt+1];


x3:='=';


x4:='=';


end;


result:=result+x1+x2+x3+x4;


end;


end;

forgot2000 2002-03-06
  • 打赏
  • 举报
回复
sakemail、icserver也可以。
forgot2000 2002-03-06
  • 打赏
  • 举报
回复
用这个控件试试http://202.96.70.228/cakk/delphi/vcl_CoolmailReleaseVer.zip

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧