[英]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.