2013-02-20 59 views
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消息。

我做錯了嗎?還有其他選擇嗎?

回答