检查电子邮件是否存在php

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了检查电子邮件是否存在php脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,我有一个 PHP脚本来检查邮件地址是否存在.

但似乎雅虎,hotmail,aol和其他提供商正在接受任何电子邮件,而不是拒绝无效的电子邮件.

只有Gmail和许多像stackoverflow.COM这样的域名都拒绝了没有虚假的电子邮件.

检查我的脚本,让我知道我是否可以做一些检查雅虎和其他人.

htML帖子表格

<html>
<body>
<form action="checkemail.PHP" method="POST">
<b>E-mail</b> <input tyPE="text" name="email">
<input type="submIT">
</form>
</body>
</html>

PHP

<?PHP

/* Validate an email address. */
function jValidateEmailUsingSMTP($sToEmail,$sFromDomain = "gmail.com",$sFromEmail = "email@gmail.com",$bIsDebug = false) {

    $bIsValid = true; // assume the address is valid by default..
    $aEmailParts = explode("@",$sToEmail); // extract the user/domain..
    getmxrr($aEmailParts[1],$aMatches); // get the mx records..

    if (sizeof($aMatches) == 0) {
        return false; // no mx records..
    }

    foreach ($aMatches as $oValue) {

        if ($bIsValid && !isset($sResponseCode)) {

            // open the connection..
            $oConnection = @fsockopen($oValue,25,$errno,$errstr,30);
            $oResponse = @fgets($oConnection);

            if (!$oConnection) {

                $aConnectionLOG['Connection'] = "ERROR";
                $aConnectionLog['ConnectionResponse'] = $errstr;
                $bIsValid = false; // unable to connect..

            } else {

                $aConnectionLog['Connection'] = "SUCCESS";
                $aConnectionLog['ConnectionResponse'] = $errstr;
                $bIsValid = true; // so far so good..

            }

            if (!$bIsValid) {

                if ($bIsDebug) PRint_r($aConnectionLog);
                return false;

            }

            // say hello to the server..
            fputs($oConnection,"HELO $sFromDomain\r\n");
            $oResponse = fgets($oConnection);
            $aConnectionLog['HELO'] = $oResponse;

            // send the email from..
            fputs($oConnection,"MAIL FROM: <$sFromEmail>\r\n");
            $oResponse = fgets($oConnection);
            $aConnectionLog['MailFromResponse'] = $oResponse;

            // send the email to..
            fputs($oConnection,"RCPT TO: <$sToEmail>\r\n");
            $oResponse = fgets($oConnection);
            $aConnectionLog['MailToResponse'] = $oResponse;

            // get the response code..
            $sResponseCode = substr($aConnectionLog['MailToResponse'],3);
            $sBaseResponseCode = substr($sResponseCode,1);

            // say goodbye..
            fputs($oConnection,"QUIT\r\n");
            $oResponse = fgets($oConnection);

            // get the quit code and response..
            $aConnectionLog['QuitResponse'] = $oResponse;
            $aConnectionLog['QuitCode'] = substr($oResponse,3);

            if ($sBaseResponseCode == "5") {
                $bIsValid = false; // the address is not valid..
            }

            // close the connection..
            @fclose($oConnection);

        }

    }

    if ($bIsDebug) {
        print_r($aConnectionLog); // output debug info..
    }

    return $bIsValid;

}
$email = $_POST['email'];

$bISEMailValid = jValidateEmailUsingSMTP("$email","gmail.com","email@gmail.com");
echo $bIsEmailValid ? "<b>Valid!</b>" : "Invalid! :(";
?>

解决方法

如果您需要确定存在电子邮件地址,请向其发送电子邮件.它应包含带有随机ID的链接.只有在单击该链接并且包含正确的随机ID时,才会激活用户的帐户(或广告发布,或发送订单,或者您正在执行的任何操作).

这是验证电子邮件地址是否存在的唯一可靠方法,并确保填写表单的人员可以访问它.

脚本宝典总结

以上是脚本宝典为你收集整理的检查电子邮件是否存在php全部内容,希望文章能够帮你解决检查电子邮件是否存在php所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。