我用DELPHI自带的控键SMTP做了一个批量发送邮件的模块,但是为什么有时候会发送报错?
我调试发现Nmsmtp1.Connect 有时候会连接报错,不知道有什么办法解决,让他发出去!代码如下:
----------------------------
function TDataModule1.emailsend(const MailTo,MailBody:TStringList;strsubject,strattach:string):boolean;
//var
//s:string; //È¡µÃ×Ö¶ÎÖµ×é³ÉµÄ×Ö·û´®
begin
result:=false;
if (strsendserver='')or(stremail='') then
begin
showmessage('·¢ÐÅÈ˵Øַδ֪£¬ÇëÔÚ²ÎÊýÉèÖÃÖÐÉèÖÃÄúµÄµç×ÓÐÅÏäºóÔÙ·¢ËÍ£¡');
abort;
end;
mainfrm.statusbar1.Panels[3].Text:='ÕýÔÚÁ¬½Ó......';
try
if NMSMTP1.Connected then
Nmsmtp1.Disconnect;
Nmsmtp1.Host :=strsendserver;
nmsmtp1.Port :=25;
nmsmtp1.UserID :=struseid;//·¢ÐÅÈ˵ÄÓû§Ãû£¬±ØÐëÊÇÕæʵµÄ
nmsmtp1.ReportLevel :=1;
Nmsmtp1.TimeOut :=10000;
nmsmtp1.Connect; //---报错地方----
///Á¬½Ó ²¢½øÐÐÉí·ÝÑéÖ¤
if AuthSucc=true then ////ÑéÖ¤³É¹¦
begin
nmsmtp1.PostMessage.FromAddress:=stremail; //·¢ÐÅÈ˵ĵç×ÓÓʼþµØÖ·
nmsmtp1.PostMessage.ToAddress :=MailTo; //ÊÕ¼þÈ˵ĵç×ÓÓʼþµØÖ· £¬¿ÉΪ¶à¸öµØÖ·
nmsmtp1.PostMessage.Body:=MailBody; //ÐżþÕýÎÄ
nmsmtp1.PostMessage.Subject :=strsubject; //Óʼþ±êÌâ
if Mailfrm.Edit2.Text<>'' then
begin
Mailto.Clear ;
strattach:=Mailfrm.Edit2.Text;
Mailto.Add(strattach); //ÔÝʱֻ·¢Ò»·Ý¸½¼þ£¬ÒÔºó¿É¸Ä½øΪͬʱ·¨¶à·Ý¸½¼þ
nmsmtp1.PostMessage.Attachments:=MailTo; //¸½¼þ
end;
nmsmtp1.SendMail;
mainfrm.statusbar1.Panels[3].Text:='Óʼþ·þÎñÆ÷Á¬½Ó³É¹¦£¡';
result:=true;
end
else
begin
showmessage('Óû§ÃûÓëÃÜÂë²»·û£¬ÎÞ·¨Í¨¹ýÉí·ÝÑéÖ¤£¡');
mainfrm.statusbar1.Panels[3].Text:='Éí·ÝÑé֤ʧ°Ü£¡';
end;
finally
mainfrm.statusbar1.Panels[3].Text:='';
end;
end;
------------------------------------------------------------
我调试发现Nmsmtp1.Connect 有时候会连接报错,不知道有什么办法解决,让他发出去!代码如下:
----------------------------
function TDataModule1.emailsend(const MailTo,MailBody:TStringList;strsubject,strattach:string):boolean;
//var
//s:string; //È¡µÃ×Ö¶ÎÖµ×é³ÉµÄ×Ö·û´®
begin
result:=false;
if (strsendserver='')or(stremail='') then
begin
showmessage('·¢ÐÅÈ˵Øַδ֪£¬ÇëÔÚ²ÎÊýÉèÖÃÖÐÉèÖÃÄúµÄµç×ÓÐÅÏäºóÔÙ·¢ËÍ£¡');
abort;
end;
mainfrm.statusbar1.Panels[3].Text:='ÕýÔÚÁ¬½Ó......';
try
if NMSMTP1.Connected then
Nmsmtp1.Disconnect;
Nmsmtp1.Host :=strsendserver;
nmsmtp1.Port :=25;
nmsmtp1.UserID :=struseid;//·¢ÐÅÈ˵ÄÓû§Ãû£¬±ØÐëÊÇÕæʵµÄ
nmsmtp1.ReportLevel :=1;
Nmsmtp1.TimeOut :=10000;
nmsmtp1.Connect; //---报错地方----
///Á¬½Ó ²¢½øÐÐÉí·ÝÑéÖ¤
if AuthSucc=true then ////ÑéÖ¤³É¹¦
begin
nmsmtp1.PostMessage.FromAddress:=stremail; //·¢ÐÅÈ˵ĵç×ÓÓʼþµØÖ·
nmsmtp1.PostMessage.ToAddress :=MailTo; //ÊÕ¼þÈ˵ĵç×ÓÓʼþµØÖ· £¬¿ÉΪ¶à¸öµØÖ·
nmsmtp1.PostMessage.Body:=MailBody; //ÐżþÕýÎÄ
nmsmtp1.PostMessage.Subject :=strsubject; //Óʼþ±êÌâ
if Mailfrm.Edit2.Text<>'' then
begin
Mailto.Clear ;
strattach:=Mailfrm.Edit2.Text;
Mailto.Add(strattach); //ÔÝʱֻ·¢Ò»·Ý¸½¼þ£¬ÒÔºó¿É¸Ä½øΪͬʱ·¨¶à·Ý¸½¼þ
nmsmtp1.PostMessage.Attachments:=MailTo; //¸½¼þ
end;
nmsmtp1.SendMail;
mainfrm.statusbar1.Panels[3].Text:='Óʼþ·þÎñÆ÷Á¬½Ó³É¹¦£¡';
result:=true;
end
else
begin
showmessage('Óû§ÃûÓëÃÜÂë²»·û£¬ÎÞ·¨Í¨¹ýÉí·ÝÑéÖ¤£¡');
mainfrm.statusbar1.Panels[3].Text:='Éí·ÝÑé֤ʧ°Ü£¡';
end;
finally
mainfrm.statusbar1.Panels[3].Text:='';
end;
end;
------------------------------------------------------------
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货