使用 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;
我正在使用 TIdSMTP
和 TIdMessage
(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" 属性 可能尚未设置。
我正在使用 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;
我正在使用 TIdSMTP
和 TIdMessage
(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" 属性 可能尚未设置。