我正在使用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组件)。
我还使用Object Inspector在TIdSMTP
属性中设置了主机名,端口,用户名和密码,所有详细信息都是雅虎在他们的网站上提供的(主机名,端口,用于登录的电子邮件和我的电子邮件密码)< / p>
在我在DBGrid
中选择的行中,有一个名为email的字段,其中包含客户端的邮件地址,因此这是电子邮件应该去的地方。
另外,我在一个名为details的字段中添加了一些信息,这些信息应该放在电子邮件的正文部分(参见上面的代码)
一旦我启动我的软件,选择DBGrid
中的行并点击动作按钮上的发送,软件冻结(没有响应)大约20-40秒,而不是它返回错误说:连接已关闭正常。
我正在使用yahoo smtp来测试一下,我最终会使用托管我的网站的托管服务提供商的smtp(以及db所在的位置)
Indy版本10.6.2.5311 使用Delphi 10 Seattle
到目前为止我对错误的看法有什么看法?
答案 0 :(得分:1)
这可能与缺少的SSL库有关吗?我只是注意到你使用的是端口465;不是SSL连接?
我从未使用TIdSMTP组件,但我发现在尝试使用SSL连接时,TIdHTTP组件出现类似情况(连接超时,没有任何明显的指示,为什么),除非适当DLL已经可用。它们不是Indy不可分割的一部分(我想这是一些关于在某些国家使用加密的法律问题),但它们可以在其他地方免费获得。
编辑:该组件还有一个“UseTLS”属性,可能尚未设置。