使用 TIdSMTP 和 TIdMessage 发送电子邮件

Sending email using TIdSMTP and TIdMessage

我正在使用 ActionManager 中的操作向 DBGrid 中的客户发送电子邮件。

我 select 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;

我正在使用 TIdSMTPTIdMessage(Indy 组件)。 我还使用 Object Inspector 在 TIdSMTP 属性中设置了主机名、端口、用户名和密码,所有详细信息都是雅虎在其网站上提供的(主机名、端口、我的登录电子邮件和我的电子邮件密码)

DBGrid 中的 I select 行中有一个名为 email 的字段,其中包含客户的邮件地址,因此这就是电子邮件应该去的地方。 另外,我添加了一些包含在名为 details 的字段中的信息,这些信息应该放在电子邮件的正文部分(参见上面的代码)

一旦我启动我的软件,select DBGrid 中的行并点击操作按钮上的发送,软件会冻结(无响应)大约 20-40 秒 returns 一条错误提示:连接正常关闭。

我使用 yahoo smtp 只是为了测试一下,我最终会使用托管我网站的托管服务提供商的 smtp(以及数据库所在的位置)

Indy 版本 10.6.2.5311 使用 Delphi 10 西雅图

到目前为止我做错了什么有什么想法吗?

这可能与缺少 SSL 库有关吗?我只是注意到您正在使用端口 465;这不是用于 SSL 连接吗?

我从未使用过 TIdSMTP 组件,但我看到在尝试使用 SSL 连接时,TIdHTTP 组件会出现类似的情况(连接超时,但没有任何明显的原因说明),除非已提供适当的 DLL。它们不是 Indy 不可或缺的一部分(我认为在某些国家/地区使用加密是一个法律问题)但它们可以在其他地方免费获得。

编辑:该组件还有一个 "UseTLS" 属性 可能尚未设置。