Я использую действие из моего ActionManager
, чтобы отправить электронное письмо клиенту в моем DBGrid
.
Я выбираю row
с данными клиента в моем DBGrid
, щелкаю правой кнопкой мыши, появляется 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
с помощью Object Inspector, все данные указаны в том виде, в котором Yahoo предоставил их на своем веб-сайте (имя хоста, порт, мой адрес электронной почты для входа в систему и мой пароль электронной почты)
В строке, которую я выбираю в DBGrid
, есть поле с именем электронная почта, которое содержит почтовый адрес клиента, следовательно, туда должно отправляться электронное письмо. Кроме того, я добавляю некоторую информацию, содержащуюся в поле с именем details, которое должно находиться в разделе тела сообщения электронной почты (см. код выше).
Как только я запускаю свое программное обеспечение, выбираю строку в DBGrid
и нажимаю «Отправить» на кнопке действия, программное обеспечение зависает (не отвечает) примерно на 20-40 секунд, после чего возвращает сообщение об ошибке: «Соединение закрыто корректно».
Я использую yahoo smtp просто для проверки, в конечном итоге я буду использовать smtp от моего хостинг-провайдера, на котором размещен мой веб-сайт (и где также находится база данных)
Версия Indy 10.6.2.5311 Использование Delphi 10 Seattle
Любые мысли о том, что я делаю неправильно до сих пор?