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

3
一些人通过输入他们的电子邮件地址订阅了我的博客。
但是,其中一些电子邮件地址是不存在的。
当我向这些电子邮件地址发送电子邮件时,我该如何知道这些电子邮件地址是否有效?

这个问题与你之前的问题有什么不同:如何知道电子邮件地址是否无效?,并且这个“博客”是否与如何每周发送100,000封电子邮件?相同? - mario
4个回答

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

1
真是一项创新的技术! - JAL
这是唯一真正有效的解决方案。我总是建议在订阅某人到列表或接受用于帐户创建或输入任何可能生成自动电子邮件的数据库之前,通过这种方式验证电子邮件。不这样做的最好情况是退信和错误数据,最坏的情况是垃圾邮件投诉以及您的域名和/或邮件服务器声誉的损失,并可能终止您的邮件提供商或托管提供商(如果您拥有自己的邮件服务器)。 - cazort

2
据我所知,您无法判断电子邮件是否有效。只有在发送邮件失败时才会得知该电子邮件无效,无论是因为域名不存在还是该域名上的帐户不存在。
如果您想确保仅使用真实帐户进行订阅,请发送确认电子邮件,在该电子邮件中用户需要点击链接以验证其帐户(就像casablanca在这里所说的那样)。

2

您永远无法100%确定提供的电子邮件地址是否真实存在。

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

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

您可以实现以下命令(或使用其中一个为您执行此操作的许多PHP脚本):

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

1

您可以使用以下代码进行 MX 记录查询:

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

这将防止用户使用“jdjshjk@fdhjk.dff”类型的输入。请参阅php.net上的手册页面:http://www.php.net/manual/zh/function.getmxrr.php


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接