繁体   English   中英

使用TIdSMTP和TIdMessage发送电子邮件

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

我使用TIdSMTPTIdMessage (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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM