【问题标题】:Connection timed out error when using SMTP to send emails with Delphi?使用 SMTP 通过 Delphi 发送电子邮件时连接超时错误?
【发布时间】:2011-12-20 13:49:08
【问题描述】:

如何使用 delphi 2010 发送电子邮件地址,例如(验证电子邮件、密码丢失或任何 html/纯文本电子邮件。

我尝试使用以下代码,但在尝试发送邮件时收到EIdSocket Eroor with message 'Socket Error #10060 Connection Timed Out'

procedure TForm5.btnSendMailClick(Sender: TObject);
begin

//setup SMTP
smtppass := ed_IdVerification.Text;
SMTP.Host := 'smtp.google.com';   // Controle a distance
SMTP.Port := 465;
smtp.Username := 'hetallica69@gmail.com';
smtp.Password := QuotedStr(smtppass);


//setup mail message

MailMessage.From.Address := 'hetallica69@gmail.com';
MailMessage.Recipients.EMailAddresses := '_rafik@live.fr';

MailMessage.Subject := 'Confirm your account';
MailMessage.Body.Text := 'Text goes here';

//send mail
try
 try
   if not smtp.Connected then SMTP.Connect() ;
   SMTP.Send(MailMessage) ;
 except on E:Exception do
   ShowMessage(E.Message);
 end;
   finally
     if SMTP.Connected then SMTP.Disconnect;
   end;
end;

【问题讨论】:

  • 我不是在问如何发送匿名或网络钓鱼电子邮件,但我想知道如何使用 delphi 使用 SMTP 组件,每当有新用户注册时,我都需要发送验证电子邮件
  • 你得到什么错误?编译器错误?运行时错误?超时不是编译器错误。您的问题含糊不清且无法回答,并且缺少有关您的实际错误的许多详细信息。此外,您在编辑之前发布的原始代码版本使您看起来像网络钓鱼者,无论您如何编辑这篇文章。
  • 项目 splash_screen.exe 触发异常类 EIdSocket Eroor 并显示消息“套接字错误 #10060 连接超时”

标签: delphi delphi-2010


【解决方案1】:

您收到的错误意味着此行上的连接失败:SMTP.Connect()

通常,这意味着端口错误,服务器未启动,或者您没有连接。

在这种情况下,您没有连接,很可能是因为您的 ISP 阻止了与该远程端口的连接。

尝试从您的托管网络服务器发送电子邮件。

即使您可以连接,您的代码也不会按原样运行。 Google SMTP 服务器上的端口 465 需要安全 (SSL) 连接。你仍然需要实现它。看一看:How do I send e-mail using Gmail's SMTP and Indy 10?

【讨论】:

  • 这是错误的。它失败了,因为 gmail 使用了安全连接,而海报却没有。它与连接或服务器状态无关。 (gmail 不习惯经常下线。)阅读 cmets 到原始问题,然后按照其中提供的链接进行操作。 :) 您可能希望在反对票开始之前删除此答案。注意:我没有反对。
  • 肯,我没看错。如果连接是安全的,它至少会连接。 TLS 和 SSL “安全连接”位于 TCP 层之上。我也无法连接,因为我的 ISP 阻塞了。
  • 嗯,没有。 :) 我在第一次发布 TB 时遇到了 Thunderbird 和配置 gmail SMTP 的问题,并且出现了连接超时错误。 gmail 支持帮助我将其跟踪到配置的安全部分,一旦我明白了,连接超时就消失了。因此,要么 TLS 设置导致连接超时,要么 gmail 支持决定对我撒谎说 gmail 已关闭并以 TLS 借口隐藏它。 :)
  • 我在工作中试过这个。当我可以连接时,我得到一个 EIdReadTimeout,但我不使用 TLS。当我尝试连接到错误的端口或已知的阻塞端口时,我得到了 EIdConnectTimeout。
  • 好的。我不确定为什么会有差异(除非 Thunderbird 只是使用通用的“超时”消息而不是通知特定类型的超时 - 当我阅读您的最后一条评论时才想到这一点)。很高兴我没有投反对票。 :) 我得把它拿回来。仍然不确定你是对的,但至少我不能肯定你是错的。 ;)
猜你喜欢
  • 2015-02-21
  • 2014-01-04
  • 1970-01-01
  • 2016-07-18
  • 2014-02-21
  • 2019-05-06
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多