5
目前我正在測試Ararat Synapse在Delphi中發送電子郵件。如何使用Synapse for Delphi中止SMTP發送操作?
本地函數創建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 /關閉套接字導致出現StackOverflow因爲套接字會再無休止地抽HR_CloseSocket消息。
我做錯了嗎?還有其他選擇嗎?
謝謝,很遺憾,我無法找到它。這工作得很好。 – 2013-02-20 12:43:50