Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Delphi与Indy或Delphi的任何其他组件/工具检查电子邮件是否存在_Delphi_Indy - Fatal编程技术网

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

使用Delphi与Indy或Delphi的任何其他组件/工具检查电子邮件是否存在,delphi,indy,Delphi,Indy,我需要检查电子邮件帐户是否存在,我需要使用Delphi和Indy进行检查(如果可能) 我有一个用于ERP系统的windows数据库,我需要确保客户在系统中输入有效的电子邮件,以便我可以向客户发送他们请求的报价 我曾尝试使用send命令HELO、MAIL和RCPT在雅虎和谷歌上进行测试,但没有成功。您可以尝试,这是一个具有良好示例的开源库(请参阅SMTPClient)。 因此,此库或其他库不会告诉您电子邮件帐户是否存在,因为这取决于主机对有关不存在帐户的命令的回答方式。 在ICS中,当命令被发送时

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

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

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

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

其中ErrorCode是错误代码(即550)。

邮件服务器必须保护自己免受垃圾邮件发送者和其他恶意用户的攻击。他们不会轻易放弃自己的秘密。邮件服务器通常被配置为将发送给不存在的收件人的邮件隐藏起来。他们不会回复发件人:“对不起,该用户不存在,请重试。”


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

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

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


这就是为什么我建议“要有礼貌”。很抱歉,如果您的理解有误,我只是告诉您,如果您的应用程序显示出“类似垃圾邮件发送者”的行为(并且您以前的问题版本对您的目标不清楚),则可能导致您的IP被列入黑名单。然后你可以有更多的麻烦发送报价给客户。

我发现,如果服务器重播代码为550,则电子邮件不存在。但如果邮件地址不是本地托管在服务器上,一些SMTP服务器不回复550,以避免将信息发送到随机地址群发垃圾邮件。那么还有其他方法吗?我只是想确保客户输入了有效的电子邮件,并且我已经检查了格式。在任何设置良好的邮件服务器中,您可能无法获得所需的结果。这种技术可以用来获取真实的邮件地址,并将其用于垃圾邮件或更糟的事情。某些服务器不会告诉您地址是否存在,但您的邮件可能会发送到/dev/null,而您的IP可能会被检测到不良行为的ID阻止。礼貌一点,避免表现得像个垃圾邮件发送者…-1因为没有“恶意软件关闭”。如果这看起来很苛刻,我很抱歉,但老实说,我的邮箱里有大约2000封未读的电子邮件,因为我们公司的垃圾邮件过滤器停止工作,没有人修复它。再过两个月就有2000人了。既然你正在收集电子邮件地址,那就选择更简单的目标:如果我是雅虎或谷歌,我会雇佣最聪明的人来对付那些试图做你正在做的事情的人。我的猜测是,最聪明的人都在和你战斗。@WMAN他不是说你是个垃圾邮件发送者。他说,以特定方式被探测的邮件服务器可能会做出类似于探测者是垃圾邮件发送者的反应。因此,如果您编写的代码与垃圾邮件发送者具有相同的行为特征,那么您的IP地址可能会遇到麻烦。他的评论包含了非常好的建议,只要你能认出它。@WMAN,绝对没有办法安全地测试电子邮件地址。由于到处都是大量的垃圾邮件,每个人对它都有点过于敏感了。在RFC的规范范围内工作是不够的:向yahoo发送一些不好的电子邮件(发送到不存在的地址的电子邮件),您可能会被列入黑名单。如果你在多个域名(包括谷歌)上这么做,你可能会发现自己被数百个不同的邮件服务器列入全球黑名单。这真是一个糟糕的情况,一个你无法逃避的情况。@WMAN,你必须做其他人正在做的事情:当你注册一个新的电子邮件地址时,发送一封确认电子邮件。你不想通过电子邮件“获得创造力”,你的创造力肯定会被理解。我删除了我的否决票,因为你提供了一个合理的理由来扫描这些电子邮件地址。+1我想说有人希望你错了,但那只是一厢情愿。+1,可能有人会想要VRFY命令。。。但大多数人在很久以前就禁用了它,因为它是为不同的互联网设计的。