【发布时间】:2014-11-09 13:14:49
【问题描述】:
我无法使用TIdSMTP 发送电子邮件我收到以下消息:Socket Error # 10060 / Connection timed out.
我使用的是 Delphi XE6 版本
这是我的代码:
procedure TForm1.Button1Click(Sender: TObject);
var
IdSMTP : TIdSMTP;
IdMessage : TIdMessage;
begin
IdSMTP := TIdSMTP.Create (Nil);
IdMessage := TIdMessage.Create (Nil);
IdSMTP.Host := 'mail.mysmtp.com';
IdSMTP.Port := 25;
IdSMTP.Connect ();
IdMessage.From.Address := 'test@mysmtp.com';
IdMessage.From.Name := 'Contato';
IdMessage.Recipients.EMailAddresses := 'test@hotmail.com';
IdMessage.Subject := 'Contato test';
IdMessage.Body.Text := 'test';
IdSMTP.Send (IdMessage);
IdSMTP.Disconnect ();
FreeAndNil (IdMessage);
FreeAndNil (IdSMTP);
end;
【问题讨论】:
-
IdSMTP.connect 是否引发了异常?您可以通过 Telnet 连接到您的 SMTP 服务器吗?
-
您确定是主机吗?可能不相关,但也会缺少一些身份验证(用户名/密码/ SMTP 之前的 Pop)、端口、TSL ... 看看here,也许你必须完善你的问题。
-
请注意,您可以简单地编写
TIdSMTP.Create和TIdMessage.Create而无需 (nil)。也可以使用 try .. finally 并将 Free / FreeAndNil 放在 finally 块中,以消除内存泄漏的风险。 -
我不知道有不需要任何身份验证的 SMTP 服务器这样的东西......
-
@mjn 在这种特殊情况下,它绝对会泄漏
IdSMTP和IdMessage对象。