簡體   English   中英

使用TIdSMTP和TIdMessage發送電子郵件

[英]Sending email using TIdSMTP and TIdMessage

我正在使用ActionManager中的操作將電子郵件發送到DBGrid的客戶端。

我在DBGrid選擇包含客戶端詳細信息的row ,右鍵單擊,出現Popupactionbar ,單擊“發送郵件”操作,郵件應該發送了。

這是郵件發送操作的代碼:

procedure TForm2.actSendEmailExecute(Sender: TObject);
begin
IdSMTP1.Host := 'smtp.mail.yahoo.com';
IdSMTP1.Port := 465;

//setup mail message
IdMessage1.From.Address := 'my email address is here';
IdMessage1.Recipients.EMailAddresses := DBGrid1.DataSource.DataSet['email'];
IdMessage1.Subject   := 'test subject';
IdMessage1.Body.Text := 'test email body' + DBGrid1.DataSource.DataSet['details'];

//send mail try
IdSMTP1.Connect ;
IdSMTP1.Send(IdMessage1) ;
IdSMTP1.Disconnect;
end;

我使用TIdSMTPTIdMessage (Indy組件)。 我還使用對象檢查器在TIdSMTP屬性中設置了主機名,端口,用戶名和密碼,所有詳細信息均與雅虎在其網站上提供的一樣(主機名,端口,我用於登錄的電子郵件和我的電子郵件密碼)

在我在DBGrid選擇的行中,有一個名為email的字段,其中包含客戶端的郵件地址,因此這是該電子郵件應存放的位置。 另外,我還將添加一些名為詳細信息的字段中包含的信息,這些信息應該放在電子郵件的正文部分(請參見上面的代碼)

啟動軟件后,選擇DBGrid的行,然后單擊操作按鈕上的send,該軟件將凍結(不響應)大約20-40秒,然后返回錯誤消息:連接已正常關閉。

我使用yahoo smtp只是為了進行測試,最終我將使用托管我的網站的托管提供商的smtp(以及數據庫所在的位置)

使用Delphi 10 Seattle的Indy版本10.6.2.5311

關於到目前為止我在做什么錯有什么想法嗎?

這可能與缺少SSL庫有關嗎? 我只是注意到您正在使用端口465; SSL連接不是嗎?

我從未使用過TIdSMTP組件,但是在嘗試使用SSL連接時,除非已經使用了適當的DLL,否則TIdHTTP組件也會發生類似情況(連接超時,沒有任何明顯的原因)。提供。 它們不是Indy的組成部分(我想這在某些國家中是關於使用加密的法律問題),但在其他地方可以免費獲得。

編輯: 該組件還具有一個可能尚未設置的“ UseTLS”屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM