就是下面这段。给三个人发一封邮件起码要等上五分钟。。有没有搞错到底是哪里出了问题??
procedure sendmail(mail:string);
begin
try
if form1.IdSMTP1.Connected then
form1.IdSMTP1.Disconnect;form1.idmessage1.From.Address:=form1.Edit5.Text;  //来自哪个邮件
form1.idmessage1.From.Name:=form1.Edit3.Text;      //用户名
form1.idmessage1.Recipients.EMailAddresses:=mail; //发到哪个邮箱
form1.idmessage1.Subject:=form1.Edit6.Text;form1.idmessage1.Body.Text:=form1.Memo2.Text;
form1.idsmtp1.Host:=form1.Edit2.Text;
form1.idsmtp1.UserId:=form1.Edit3.Text;
form1.idsmtp1.Password:=form1.Edit4.Text;
form1.idsmtp1.AuthenticationType:=atlogin;form1.idsmtp1.Connect;
form1.idsmtp1.Send(form1.idmessage1);
except
showmessage('有问题。邮件发不出');
form1.idSMTP1.Disconnect;
end;
end;
//结束

解决方案 »

  1.   

    像做个循环发送
    for i:=1 to 30 do
    beginsendmail(地址变量);end;发30个起码要等上半小时,,怎么搞的呀???
      

  2.   

    form1.idsmtp1.Connect;//这句可能本来就耗时
      

  3.   

    将 form1.idsmtp1.Connect;
    该为 Form1.idsmtp1.Connected = True;最好把连接放到函数外,再初始化的时候连接,没有必要每发一封就连接一次吧。最少可以发一次连接一次吧。
      

  4.   

    function TFrom1.checkCnnct:boolean ;
    begin
      if (idsmtp1.conneceted)then result := true 
      else
      begin
        //
       
      end ;
    end ;
    procedure send();
    begin
      for ...
      begin
        if (form1.checkCnnct)then
         ...
      end ;
    end ;