2013-04-18 128 views
0

我有一個問題德爾福XE3構建發送Gmail的SMTP郵件與印(版本17.0.4770.56661)德爾福XE3印Gmail的SMTP

我可以順利把我的筆記本電腦,但其他電腦給像一個錯誤「連接正常關閉」

我的窗體上添加一個idlogfile成分,並給了我此行

Recv 18.04.2013 11:17:20: 220 mx.google.com ESMTP s47sm13947715eeg.8 - gsmtp<EOL> 
Sent 18.04.2013 11:17:20: EHLO S23-101<EOL> 
Recv 18.04.2013 11:17:20: 250-mx.google.com at your service, [195.175.87.XX]<EOL>250-SIZE 35882577<EOL>250-8BITMIME<EOL>250-STARTTLS<EOL>250 ENHANCEDSTATUSCODES<EOL> 
Sent 18.04.2013 11:17:20: STARTTLS<EOL> 
Recv 18.04.2013 11:17:21: 220 2.0.0 Ready to start TLS<EOL> 
Sent 18.04.2013 11:17:21: QUIT<EOL> 

我使用此代碼對我的應用程序

IdSMTP1.host:='smtp.gmail.com' ; 
    IdSMTP1.username:='[email protected]'; 
    IdSMTP1.Password:='XXXX'; 
    IdSMTP1.port:=587; 
    IdSMTP1.UseTLS:=utUseExplicitTLS; 
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmClient; 
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvTLSv1; 
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 2; 
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := []; 
    IdSSLIOHandlerSocketOpenSSL1.Host := IdSMTP1.Host; 
    IdSSLIOHandlerSocketOpenSSL1.Port := IdSMTP1.Port; 

    IdMessage1.From.address := '[email protected]'; 
    IdMessage1.CClist.EMailAddresses:= edit5.Text; 
    IdMessage1.Subject:= 'Subject is here'; 
    IdMessage1.Body.Clear; 
    Idmessage1.Body.Add('Body is here'); 
    for Z := 0 to ListBox8.Items.Count-1 do begin 
     TIdAttachmentFile.Create(IdMessage1.MessageParts,ListBox8.Items[Z]); 
    end; 
    IdSMTP1.Connect; 
    IdSMTP1.Authenticate; 
    try 
     try 
      idSMTP1.Send(IdMessage1); 
     except on E:Exception do 
      Memo1.Lines.Insert(0, 'ERROR: ' + E.Message); 
     end; 
    finally 
     if idSMTP1.Connected then idSMTP1.Disconnect; 
    end; 

請幫我

謝謝:)

+0

我記得,GMail彈出界面需求使用SSL/TLS。檢查防火牆或防病毒程序是否不會殺死加密的郵件通訊(Avira存在問題)。檢查日期,時間和時區設置是否正確。 –

+0

嗨arioch,我沒有使用任何防火牆或防病毒,我嘗試了很多電腦 – CeRBeR

回答

0

QUIT命令時收到STARTTLS響應後立即發送,這意味着一個異常實際SSL/TLS握手期間提出。 TIdSMTP.Connect()捕獲異常,調用Disconnect()(發送未加密的QUIT,因爲SSL/TLS未激活),然後將異常重新引發到您的代碼中。所以你需要檢查實際提出的異常。 「正常關閉連接」異常意味着連接在另一端關閉,無論是由服務器本身,還是由位於連接中間的防火牆/路由器關閉。


更新:

TIdSMTP在SVN更新於2014年修訂版5156沒有關閉套接字時再發送一個未加密的QUIT由於SSL/TLS握手失敗,因爲由於該點,套接字處於不確定狀態。

-1

您必須「允許不太安全的應用程序訪問yoputr帳戶」在您的帳戶配置。 Google hacve以這種方式添加了一些限制。

See this link in Google documentation.

+0

不,你*不需要啓用「允許不太安全的應用程序」選項。您可以讓Google生成特定於應用程序的密碼,然後您可以將該密碼與Indy一起使用,而不是通常的Gmail密碼。但是無論如何,這不是OP問題的原因,因爲在執行SMTP認證之前,在TLS握手期間發生故障。 –