邮件发送如何完成确认?(100分)

  • 主题发起人 主题发起人 bravestman
  • 开始时间 开始时间
B

bravestman

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老师:
我在用的Delphi编写邮件发送程序, 当连通成功后,发送信件时出现验证错误,请问如何解决,谢谢!!
项目紧急,盼回!!!

bravestman@163.com
[?][?][blue][/blue]
 
是不是Smtp的认证错误。
如果你使用的idSmtp,设置AuthenticationType:=atLogin;然后设置userid,和password就可以了

如果你使用的是nmsmtp,就要麻烦很多。如下
var
AuthSucc:boolean;// 是否需要密码验证
const
BaseTable:string='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
function EncodeBase64(Source:string):string; //编码函数
function FindInTable(CSource:char):integer;

function FindInTable(CSource:char):integer;
begin
result:=Pos(string(CSource),BaseTable)-1;
end;
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;
procedure TWebModule1.NMSMTP1Connect(Sender: TObject);
begin
if nmsmtp1.ReplyNumber = 250 then
nmsmtp1.Transaction('auth login'); //开始认证
if nmsmtp1.ReplyNumber =334 then //返回值为334,让你输入用BASE64编码后的用户名
nmsmtp1.Transaction(EncodeBase64('shadow'));// 用户名aaaaa
if nmsmtp1.ReplyNumber =334 then // 返回值为334,让你输入用BASE64编码后的用户密码
nmsmtp1.Transaction(EncodeBase64('xujian79')); //密码为123456
if nmsmtp1.ReplyNumber =235 then
begin
AuthSucc:=true;
end;
end;
 
用Idsmtp再试试看,很简单的。。
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部