2012-04-03 84 views
3

我們一直在使用ICS,THtmlSmtpCli來發送來自我們的應用程序的電子郵件一段時間,無論是在主VCL線程和線程中。本週早些時候,我們發現我們不再能夠從線程發送電子郵件。從主VCL線程發送它工作正常。無法通過德爾福的線程發送ICS(THtmlSmtpCli)的電子郵件

所以,我我的問題是雙重的:

  1. 有沒有人經歷了同樣的問題?
  2. 是否有任何其他組件可以用來從Delphi應用程序發送電子郵件。

我們使用的代碼如下...

FRunning := True; 
FHtmlSmtpClient := THtmlSmtpCli.Create(nil); 
with FHtmlSmtpClient do 
    begin 
    Port := '25'; 
    Host := FHost; 
    AuthType := smtpAuthNone; 
    ConfirmReceipt := FReadReceipt; 
    HdrPriority := smtpPriorityNone; 
    ContentType := smtpHtml; 
    FromName := FFromAddr; 
    HdrFrom := FFromAddr; 
    HdrTo := FToAddr; 
    HdrSubject := FSubject; 

    OnCommand := FHtmlSmtpClientCommand; 
    OnRequestDone := FHtmlSmtpClientRequestDone; 
    OnSessionClosed := FHtmlSmtpClientSessionClosed; 

    { Start first operation to do to send an email   } 
    { Next operations are started from OnRequestDone event } 
    Connect; 
    end; 

//Process the requests to send the email 
procedure FHtmlSmtpClientRequestDone(Sender: TObject; RqType: TSmtpRequest; ErrorCode:  word); 
begin 
    if not FRunning then 
    Exit; 

    { Start next operation, but first check if previous one was OK } 
    if ErrorCode <> 0 then 
    begin 
     FRunning := FALSE; { Terminate All-In-One demo } 
     Exit; 
    end; 

    case RqType of 
    smtpConnect: 
     begin 
     if FHtmlSmtpClient.AuthType = smtpAuthNone then 
      FHtmlSmtpClient.Helo 
     else 
      FHtmlSmtpClient.Ehlo; 
     end; 

    smtpHelo: FHtmlSmtpClient.MailFrom; 
    smtpEhlo: FHtmlSmtpClient.Auth; 
    smtpAuth: FHtmlSmtpClient.MailFrom; 
    smtpMailFrom: FHtmlSmtpClient.RcptTo; 
    smtpRcptTo: FHtmlSmtpClient.Data; 
    smtpData: FHtmlSmtpClient.Quit; 
    smtpQuit: FRunning := FALSE; 
    end; 
end; 

的問候,彼得。

+0

好的,那麼它卡在哪裏?它是否無法解析服務器,無法連接,無法授權,無法發送,無法關閉?你在那裏有代碼 - 我們不能奇蹟般地分辨出什麼是錯的! – 2012-04-03 09:52:24

+0

我使用Synapse http://ararat.cz/synapse/doku.php沒有任何問題。雖然我從來沒有嘗試從不同的線程發送電子郵件。但是我認爲Synapse應該沒有問題,因爲它們是基本對象(不是TComponent後代),如果你不想要的話,你不需要捕獲任何事件。 – oxo 2012-04-03 09:53:24

+0

我懷疑需要一個消息泵。 – mj2008 2012-04-03 09:56:23

回答

0

要回答第二個問題,您可以使用Delphi附帶的Indy。它有TIdMessageTIdSMTP組件,和一個TIdMessageBuilderHtml實用程序類。

+0

感謝您的提示。我找到了一個你寫的博客文章的鏈接。我們的電子郵件現在工作得很好。 http://www.projectindy.org/Sockets/Blogs/RLebeau/2005_08_17_A.EN.aspx原帖由http://stackoverflow.com/users/11480/tondrej在這裏:http://stackoverflow.com/questions/673519 /發送電子郵件功能於HTML格式 – 2012-04-04 10:35:05

相關問題