[英]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;
我使用TIdSMTP
和TIdMessage
(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.