NMsmtp发邮件???? 看一看这个贴子http://www.csdn.net/expert/topic/216/216950.shtm 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以到网上去下载,或者留下 Email 你可以到下面这个网址下载http://www.nevrona.com/indy http://www.csdn.net/expert/TopicView.asp?id=225216 function EncodeBase64(Source:string):string;const BaseTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';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;procedure TeMail.smtpSendConnect(Sender: TObject);begin SMTPConnect:=True; sbSMTP.SimpleText:=TimeToStr(Time)+' : '+'Connect ! '; if smtpSend.ReplyNumber = 250 then smtpSend.Transaction('auth login'); if smtpSend.ReplyNumber = 334 then begin smtpSend.Transaction(EncodeBase64(mCSMTPServer.mUser)); smtpSend.Transaction(EncodeBase64(mCSMTPServer.mPassword)); end; smtpSend.SendMail; sbSMTP.SimpleText:=TimeToStr(Time)+' : '+'Start send mail ! ';end; mCSMTPServer.mUser为用户名mCSMTPServer.mPassword为密码搞不定的话》》》》》》》》》》》》》 :(我就是这样搞定的 关于事赋值的问题 p2p问题 求助关于动态表名的标识问题 高手入內!!!! 關於浮點型格式化的問題 局域网编程,请高手指点 我给Speedbutton控件设置了弹出菜单,我想改为点击此控件弹出菜单,而不是在控件上按鼠标右键产生?该如何实现? 如何将鼠标的移动,限制在一定的范围内?? 小小,麻烦你可否再详细一些,编译到else就卡住了 ?zswang(伴水)(需要充充电): 请教大家几个有关listview标题排序的问题 请教:有关mciSendCommand()的用法?? delphi1.0的程序运行出错。。。?
http://www.nevrona.com/indy
const
BaseTable = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
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;procedure TeMail.smtpSendConnect(Sender: TObject);
begin
SMTPConnect:=True;
sbSMTP.SimpleText:=TimeToStr(Time)+' : '+'Connect ! ';
if smtpSend.ReplyNumber = 250 then
smtpSend.Transaction('auth login');
if smtpSend.ReplyNumber = 334 then
begin
smtpSend.Transaction(EncodeBase64(mCSMTPServer.mUser));
smtpSend.Transaction(EncodeBase64(mCSMTPServer.mPassword));
end;
smtpSend.SendMail;
sbSMTP.SimpleText:=TimeToStr(Time)+' : '+'Start send mail ! ';
end;
mCSMTPServer.mPassword为密码搞不定的话》》》》》》》》》》》》》 :(
我就是这样搞定的