【发布时间】:2016-10-09 20:44:26
【问题描述】:
我正在使用我的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 组件)。
我还使用 Object Inspector 在TIdSMTP 属性中设置了主机名、端口、用户名和密码,所有详细信息都与雅虎在其网站上提供的一样(主机名、端口、我的登录电子邮件和我的电子邮件密码)
在我在DBGrid 中选择的行中,有一个名为 email 的字段,其中包含客户的邮件地址,因此这就是电子邮件应该去的地方。
另外,我在一个名为 details 的字段中添加了一些信息,这些信息应该放在电子邮件的正文部分(参见上面的代码)
一旦我启动我的软件,选择DBGrid 中的行并点击操作按钮上的发送,软件冻结(无响应)大约 20-40 秒,然后返回错误消息:连接正常关闭。
我使用 yahoo smtp 只是为了进行测试,我最终会使用托管我的网站(以及数据库所在的位置)的托管服务提供商提供的 smtp
印地版 10.6.2.5311 使用 Delphi 10 西雅图
到目前为止我做错了什么有什么想法吗?
【问题讨论】:
标签: delphi smtp indy dbgrid tdbgrid