如何通过PHP知道电子邮件地址是否存在?

时间:2010-11-21 18:37:36

标签: php email email-validation

有些人通过输入他们的电子邮件地址订阅了我的博客。

但是有些电子邮件地址不存在。

当我向这些电子邮件地址发送电子邮件时,如何知道这些电子邮件地址是否有效?

4 个答案:

答案 0 :(得分:8)

向他们发送带有链接的确认邮件,并仅在他们点击该链接时激活订阅。

答案 1 :(得分:2)

据我所知,你不能。当您无法发送电子邮件时,您将知道该电子邮件无效,无论是因为该域名不存在还是该域名不存在该帐户。

如果您想确保只使用真实帐户进行订阅,请发送确认电子邮件,用户点击链接以验证其帐户(例如卡萨布兰卡说here)。

答案 2 :(得分:2)

您永远不会100%确定提供的电子邮件地址确实存在。

一种方法是使用SMTP VRFY命令指示目标邮件中继确认收件人。但是许多服务器都没有提供此功能。它还需要直接的SMTP通信来进行检查。

即使目标服务器没有拒绝您的收件人,收件人也可能不存在,因为某些服务器接受所有收到的电子邮件并在稍后阶段将其退回。

您可以实现以下命令(或使用为您执行此操作的许多PHP scriplet之一):

HELO <your server name>
MAIL FROM: <>
RCPT TO: <destination@to.check>
QUIT

答案 3 :(得分:1)

您可以使用以下命令执行MX记录查找:

$result = getmxrr($hostname, $mxHosts);
if(count($mxHosts) < 1){
   //no MX records found
}

这将阻止您的用户使用'jdjshjk@fdhjk.dff'类型的输入。请参阅php.net上的手册页:http://www.php.net/manual/en/function.getmxrr.php