如何使用Delphi的Synapse中止SMTP发送操作?

5

目前我正在使用Ararat Synapse测试Delphi发送电子邮件。

一个本地函数创建了一个TSMTPSend并发送了邮件。
如何中止这个操作? 我设置了一个回调函数,将其分配给SMTP.Sock.OnStatus以执行一些状态输出。
当我想要中止发送进程时,我认为我可以在回调函数中使用TSMTPSend的TTCPBlockSocket,因为在这个函数中我不能直接访问TSMTPSend。

我想做的基本上看起来像这样:

MyCallBack(Sender: TObject; Reason: THookSocketReason; const Value: string);
begin
  if FCancelWasClicked then
  begin
    if Sender is TTCPBlockSocket then
      TTCPBlockSocket(Sender).StopFlag := True;
      // or TTCPBlockSocket(Sender).AbortSocket or CloseSocket
  end;
end;

但是StopFlag没有效果,而AbortSocket/ CloseSocket会导致堆栈溢出,因为套接字将无休止地泵送HR_CloseSocket消息。我做错了吗?还有其他选项吗?
1个回答

6

1
谢谢,可惜我没能找到它。这个很顺利。 - Erik Virtel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接