使用带有Indy的Delphi或Delphi的任何其他组件/工具检查电子邮件的存在

时间:2011-03-27 14:24:07

标签: delphi indy

我需要检查电子邮件帐户是否存在,我需要使用Delphi和Indy(如果可能)来做

我有一个用于ERP系统的Windows数据库,我需要确保客户在系统中输入有效的电子邮件,以便我可以向客户发送他们要求的报价。

我尝试使用发送命令HELO,MAIL和RCPT在雅虎和谷歌上进行测试,但没有成功。

3 个答案:

答案 0 :(得分:4)

邮件服务器必须保护自己免受垃圾邮件发送者和其他恶意企图。他们不会轻易放弃他们的秘密。邮件服务器通常配置为发送给不存在的收件人的黑洞邮件。他们没有回复发件人说“抱歉,该用户不存在,请再试一次。”

因此,如果您想验证电子邮件地址是否有人,我认为唯一可以确定的方法是发送电子邮件请求回复。

答案 1 :(得分:4)

您必须要求您的客户确认他们的电子邮件地址,即输入两次以减少拼写错误,要求注册并发送激活链接等。明确声明他们需要一个有效的电子邮件地址:如果他们问你一个报价他们为什么要输入一个无效的地址?但请注意,有些人可能会使用一次性电子邮件地址来保护他们真实的电子邮件地址。

您无法检查地址是否确实存在,只是询问其服务器。由于垃圾邮件发送者为收获和清理地址列表而实施的大量垃圾邮件和技术,大多数服务器都设置为自我保护。

这就是我建议“礼貌”的原因。我很抱歉,如果你的方法不对,我只是告诉你,如果你的应用程序显示“类似垃圾邮件”的行为(并且你的问题的先前版本对你的目标很不清楚),它可能会导致你的IP被列入黑名单。然后,您可以将更多麻烦发送给客户。

答案 2 :(得分:-1)

您可以尝试ICS components,一个包含很好示例的开源库(请参阅SMTPClient)。 因此,此库或其他人不会告诉您电子邮件帐户是否存在,因为它取决于主持人对不存在的帐户的命令的回答方式。 在ICS中,当发送命令时,您可能需要管理一个事件:SmtpRequestDone(Sender: TObject; RqType: TSmtpRequest;ErrorCode: Word);
其中ErrorCode是错误代码(即550)。