我遇到了这个PHP代码使用SMTP检查电子邮件地址而不发送电子邮件。
有没有人尝试过类似的方法,或者对你有用吗?你能判断客户/用户输入的电子邮件是否正确和是否存在吗?
有时可以使用两种方法来确定收件人是否实际存在:
>
您可以连接到服务器,并发出vrfy
命令。很少有服务器支持此命令,但它的用意正是如此。如果服务器以2.0.0 DSN响应,则该用户存在。
VRFY user
您可以发出RCPT
,并查看邮件是否被拒绝。
MAIL FROM:<>
RCPT TO:<user@domain>
如果用户不存在,您将得到5.1.1 DSN。但是,邮件没有被拒绝,并不意味着用户的存在。有些服务器会静默地丢弃这样的请求,以防止枚举它们的用户。其他服务器无法验证用户,因此必须接受消息。
还有一种名为greylisting的反垃圾邮件技术,它会导致服务器最初拒绝该地址,并期望一段时间后真正的SMTP服务器会尝试重新传递。这将破坏验证地址的尝试。
老实说,如果您试图验证一个地址,最好的方法是使用一个简单的正则表达式来阻止明显无效的地址,然后将一个实际的电子邮件和一个链接发送回您的系统,以验证是否收到了该电子邮件。这也确保他们的用户输入了他们的实际电子邮件,而不是一个轻微的错误,碰巧属于其他人。