如何使用Synapse for Delphi中止SMTP发送 *** 作?

如何使用Synapse for Delphi中止SMTP发送 *** 作?,第1张

概述目前我正在测试Ararat Synapse在Delphi发送电子邮件. 本地函数创建TSMTPSend并发送电子邮件. 我怎样才能中止这个 *** 作? 我已经设置了一个分配给SMTP.Sock.OnStatus的回调函数来执行一些状态输出. 当我想中止发送进度时,我想我可以在回调函数中使用TSMTPSend的TTCPBlockSocket,因为在这个函数中我无法直接访问TSMTPSend. 我想做的事情 目前我正在测试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导致StackOverFlow,因为套接字将无休止地抽取HR_CloseSocket消息.

我做错了吗?还有其他选择吗?

解决方法 Synapse提供心跳功能,允许实现取消行为.

http://www.ararat.cz/synapse/doku.php/public:howto:heartbeat

处理OnHeartbeat事件,将HeartbeatRate属性设置为心跳之间的间隔,并设置StopFlag以取消 *** 作.

总结

以上是内存溢出为你收集整理的如何使用Synapse for Delphi中止SMTP发送 *** 作?全部内容,希望文章能够帮你解决如何使用Synapse for Delphi中止SMTP发送 *** 作?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存