软件在邮件发送的过程中退出,就会产生异常,请问高手,如何在程序退出的时候强行终止邮件发送,避免异常var
  FormReport: TFormReport;
implementationuses Unit1, Unit9;{$R *.dfm}var
  TmpThread:TSendMail;procedure TFormReport.TeButton3Click(Sender: TObject);
var
  Pt:TIdMessageParts;
  AttFile:AnsiString;
begin
  RainExam.OpenDialog.Title:='请选择插入的附件';
  RainExam.OpenDialog.Filter:='所有文件(*.*)|*.*';
  if RainExam.OpenDialog.Execute then
  begin
   // Self.spSkinMemo1.Lines.Add(RainExam.OpenDialog.FileName);
  // Pt:=Self.IdMsg.MessageParts.Add;
   //Pt:=TidMessageParts.Create(Self.IdMsg.MessageParts);
   Self.spSkinMemo2.Lines.Add('附件:'+RainExam.OpenDialog.FileName);
   AttFile:=RainExam.OpenDialog.FileName;
   TIdAttachment.Create(Self.IdMsg.MessageParts,Attfile);
  end;
end;procedure TFormReport.Send;
begin
  SMTP1.AuthenticationType := atLogin;  SMTP1.username:='903315113';
  SMTP1.Password :='zhouweiyong';  SMTP1.Host :='smtp.qq.com';
  SMTP1.Port :=25;
  try
   if  self.SMTP1.Connected then Self.SMTP1.Disconnect;
   SMTP1.Connect;
  except
    RainExam.MessageBox.MessageDlg('邮件发送失败,请稍后再次发送',mtCustom,[MBOK],0);
    Exit;
  end;  try
   with IdMsg do
    begin
     body.Clear;
     Body.Assign(Self.spSkinMemo1.Lines);
     From.address :='[email protected]';
     Recipients.EMailAddresses :='[email protected]';
     Subject:=Self.spSkinComboBox1.Text+'  '+Self.TeSEdit1.Text;     //idmsg.MessageParts.Add
   end;
  SMTP1.Send(IdMsg);
  except
     RainExam.MessageBox.MessageDlg('邮件发送失败,请稍后再次发送',mtCustom,[MBOK],0);
     exit;
  end;  Self.Hide;
  RainExam.MessageBox.MessageDlg('邮件发送成功,谢谢您对雨璇的支持!',mtCustom,[MBOK],0);
  SMTP1.Disconnect;
  Self.Close;
  Self.TeButton1.Enabled:=true;
end;procedure TFormReport.TeButton1Click(Sender: TObject);
begin
  Self.spSkinStatusPanel1.Caption:='正在发送邮件,请稍后!';
  Self.TeButton1.Enabled:=false;
  //if TmpThread<>nil then FreeAndNil(TmpThread);
  if TmpThread<>nil then TmpThread.Terminate;  TmpThread:=TSendMail.Create(True);
  TmpThread.FreeOnTerminate:=True;
  TmpThread.Resume;
end;procedure TFormReport.SMTP1Work(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCount: Integer);
begin
   Self.spSkinStatusPanel1.Caption:='正在开始发送邮件...';
   Self.Gauge1.Progress:=AWorkCount;
end;procedure TFormReport.SMTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;
  const AWorkCountMax: Integer);
begin
   Self.Gauge1.MaxValue:=Self.SMTP1.MaxLineLength;
   Self.spSkinStatusPanel1.Caption:='正在准备连接邮件服务器...';
end;procedure TFormReport.SMTP1WorkEnd(Sender: TObject; AWorkMode: TWorkMode);
begin
   Self.spSkinStatusPanel1.Caption:='发送完毕,正在退出连接...';
   Self.Gauge1.Progress:=Self.Gauge1.MaxValue;
end;procedure TFormReport.TeButton2Click(Sender: TObject);
begin
  ShellExecute(Application.Handle,'open',PChar(RainExam.bbspage), nil, nil, SW_MAXIMIZE);
end;procedure TFormReport.FormDestroy(Sender: TObject);
begin
  if Self.SMTP1.Connected then Self.SMTP1.Disconnect;
  if TmpThread<>nil then
  begin
    TmpThread.Terminate;
   // showmessage('');
   // FreeAndNil(Tmpthread);
  end;
end;procedure TFormReport.TeButton4Click(Sender: TObject);
begin
  Self.Close;
end;