猿问

如何检查电子邮件地址是否存在而不发送电子邮件?

如何检查电子邮件地址是否存在而不发送电子邮件?

我遇到过这个使用SMTP检查电子邮件地址而不发送电子邮件的PHP代码.

有没有人尝试过类似的方法,或者它对你有用吗?你能判断出电子邮件客户/用户输入的内容是否正确&是否存在?


梦里花落0921
浏览 2553回答 3
3回答

富国沪深

有两种方法可以有时用于确定收件人是否实际存在:您可以连接到服务器,并发出VRFY命令。很少有服务器支持此命令,但它正是用于此目的。如果服务器使用2.0.0DSN进行响应,则存在用户。VRFY用户您可以发出一个RCPT,并查看邮件是否被拒绝。邮件来源:<>rcpt到:<user@Domain>如果用户不存在,您将得到一个5.1.1DSN。然而,仅仅因为电子邮件没有被拒绝,并不意味着用户存在。一些服务器会默默地丢弃这样的请求,以防止其用户的枚举。其他服务器无法验证用户,因此不管如何,都必须接受该消息。还有一种名为greylist的反垃圾邮件技术,它将导致服务器最初拒绝地址,期望一个真正的smtp服务器稍后会尝试重新发送。这将破坏验证地址的尝试。老实说,如果您试图验证一个地址,最好的方法是使用一个简单的regex来阻止明显无效的地址,然后发送一个实际的电子邮件,并返回到您的系统的链接,该链接将验证收到的电子邮件。这也确保了他们的用户输入他们的实际电子邮件,而不是一个轻微的错误,碰巧属于其他人。

炎炎设计

一般的答案是你可以不检查电子邮件地址是否存在事件,如果你向它发送电子邮件:它可能只是进入一个黑洞。尽管如此,这里描述的方法是相当有效的。中的生产代码中使用它。ZoneCheck只不过它使用的是RSET而不是退出。在用户与邮箱的交互并不昂贵的情况下,许多站点实际上通过发送一个必须发送回发射器的秘密号码(通过转到一个秘密URL或通过电子邮件发回这个秘密号码)来测试邮件是否到达某个地方。大多数邮件列表都是这样工作的。
随时随地看视频慕课网APP
我要回答