2011-12-20 120 views
4

如何與德爾福2010年發送的電子郵件地址,如(verefication電子郵件,密碼丟失,或任何HTML /純文本電子郵件。使用SMTP與Delphi發送電子郵件時連接超時錯誤?

我試着用下面的代碼,但嘗試發送郵件時,我得到EIdSocket Eroor with message 'Socket Error #10060 Connection Timed Out'

procedure TForm5.btnSendMailClick(Sender: TObject); 
begin 

//setup SMTP 
smtppass := ed_IdVerification.Text; 
SMTP.Host := 'smtp.google.com'; // Controle a distance 
SMTP.Port := 465; 
smtp.Username := '[email protected]'; 
smtp.Password := QuotedStr(smtppass); 


//setup mail message 

MailMessage.From.Address := '[email protected]'; 
MailMessage.Recipients.EMailAddresses := '[email protected]'; 

MailMessage.Subject := 'Confirm your account'; 
MailMessage.Body.Text := 'Text goes here'; 

//send mail 
try 
try 
    if not smtp.Connected then SMTP.Connect() ; 
    SMTP.Send(MailMessage) ; 
except on E:Exception do 
    ShowMessage(E.Message); 
end; 
    finally 
    if SMTP.Connected then SMTP.Disconnect; 
    end; 
end; 
+0

我不問如何發送匿名或網絡釣魚電子郵件,但我想知道知道如何用Delphi使用SMTP組件,我需要發送驗證郵件,每當一個新的用戶註冊等 – 2011-12-20 14:15:51

+3

什麼錯誤做你得到?編譯器錯誤?運行時錯誤?超時不是編譯器錯誤。你的問題含糊不清,錯過了關於你的實際錯誤的許多細節。此外,您在編輯之前發佈的原始代碼版本使您看起來像是一個Phisher,無論您編輯此帖是多少。 – 2011-12-20 14:39:32

+2

你見過[用Indy發送郵件給GMail](http://www.marcocantu.com/tips/oct06_gmail.html)嗎? – mjn 2011-12-20 14:45:56

回答

3

您收到的連接在這條線失敗手段的錯誤:SMTP.Connect()

通常,這意味着該端口是錯誤的,服務器是不起來,或者你沒有連接。

在這種情況下,您沒有連接性,很可能是因爲您的ISP阻止連接到該遠程端口。

嘗試從您的託管網站服務器發送電子郵件。

即使您可以連接,您的代碼也不會按原樣工作。 Google SMTP服務器上的端口465需要安全(SSL)連接。你仍然需要實現它。看一看:How do I send e-mail using Gmail's SMTP and Indy 10?

+2

這是錯誤的。它失敗了,因爲gmail使用安全連接,而海報沒有。它與連接或服務器狀態無關。 (gmail不習慣經常關閉。)閱讀原始問題的評論,並遵循其中提供的任一鏈接。 :)你可能想在dowvotes開始之前刪除這個答案。注意:我不是downvoting。 – 2011-12-20 18:49:02

+0

肯,我沒有錯。如果連接安全,至少應該連接。 TLS和SSL「安全連接」位於TCP層之上。我無法連接,因爲我的ISP阻止。 – 2011-12-20 18:51:49

+0

嗯,沒有。 :)當TB剛剛發佈時,我遇到了Thunderbird和配置Gmail SMTP的問題,並且出現連接超時錯誤。 gmail支持幫助我將它跟蹤到配置的安全部分,並且一旦我獲得了直接的連接超時消失。所以無論是TLS設置導致連接超時,或gmail支持決定對我說謊關於gmail被關閉並用TLS藉口隱藏它。 :) – 2011-12-20 21:29:19

相關問題