Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php smtp验证电子邮件未捕获异常';SMTP验证电子邮件异常超时;_Php_Email Verification - Fatal编程技术网

Php smtp验证电子邮件未捕获异常';SMTP验证电子邮件异常超时;

Php smtp验证电子邮件未捕获异常';SMTP验证电子邮件异常超时;,php,email-verification,Php,Email Verification,通过一些修改来检查邮件地址的存在 实际上,您链接到的代码获取电子邮件地址,查找与域相关的MX记录,然后连接到与该域相关的SMTP服务器,并询问其电子邮件地址是否有效 您看到当前错误是因为被询问的服务器没有响应 这可能有几个原因,服务器可能没有启动,电子邮件地址可能毫无意义,域名可能根本不存在 如果是我,我会用try-catch包装验证,如果我发现“SMTP\u-validate\u-Email\u-Exception\u-Timeout”错误,那么我会将地址标记为可能不真实。然后过一会儿,我会

通过一些修改来检查邮件地址的存在



实际上,您链接到的代码获取电子邮件地址,查找与域相关的MX记录,然后连接到与该域相关的SMTP服务器,并询问其电子邮件地址是否有效

您看到当前错误是因为被询问的服务器没有响应

这可能有几个原因,服务器可能没有启动,电子邮件地址可能毫无意义,域名可能根本不存在

如果是我,我会用try-catch包装验证,如果我发现“SMTP\u-validate\u-Email\u-Exception\u-Timeout”错误,那么我会将地址标记为可能不真实。然后过一会儿,我会回去检查,看看是否可以再次验证地址

编辑

只想回答你下面的问题

您可以尝试用以下代码替换while循环中的代码:

$email = $row['mail'];

$validator = new SMTP_Validate_Email($email, $from);
$emailError = false;

    try 
    {
        $smtp_results = $validator->validate();
    } 
    catch (Exception $e) 
    {
        $emailError = true;
    }

    $mail=str_replace(' ','',$row['mail']);
    // var_dump($smtp_results);
    if($smtp_results[$email] && !$emailError)
    {
        $sql1="UPDATE  mailvalid SET  statut = 1 WHERE  id =".$row['id']."";
        mysql_query($sql1) or  die(mysql_error());
    }
    else
    {
        $emailError = false;
        $sql2="INSERT INTO mailnonvalid (mail) VALUES ('".$row['mail']."')";
        mysql_query($sql2) or  die(mysql_error());

        $sql3="DELETE FROM mailvalid WHERE id = ".$row['id']."";
        mysql_query($sql3) or  die(mysql_error());
    }
    // var_dump($email);
    echo $row['id'].'</br>';
$email=$row['mail'];
$validator=新SMTP\u Validate\u电子邮件($Email$from);
$emailError=false;
尝试
{
$smtp_results=$validator->validate();
} 
捕获(例外$e)
{
$emailError=true;
}
$mail=str_replace(“”,,$row['mail']);
//变量转储($smtp\U结果);
如果($smtp_结果[$email]&&!$emailError)
{
$sql1=“UPDATE mailvalid SET statut=1,其中id=“.$row['id']”;
mysql_query($sql1)或die(mysql_error());
}
其他的
{
$emailError=false;
$sql2=“插入到mailnovalid(mail)值(“$row['mail']”)中。”);
mysql_query($sql2)或die(mysql_error());
$sql3=“从邮件中删除有效,其中id=“.$row['id']”;
mysql_query($sql3)或die(mysql_error());
}
//var_dump(电子邮件);
echo$row['id']。
';
现在,如果遇到错误,它会将电子邮件地址视为不在$smtp_结果中


试试看,看情况如何

您最好忽略它,因为:

  • smtp验证电子邮件类可以接收多个电子邮件地址,其中任何一个都可能引发错误
  • 如果一个域存在多个smtp服务器(例如,gmail地址可能会咨询多个smtp服务器-我大概是8个吧?),则只需一个服务器确认地址,该地址就不会被跳转(这是类真正检查的全部内容)

  • 必须在类本身中修复此错误…

    是否可能在检测到此错误时,删除此电子邮件地址并继续分析检查上述内容是否正常
    Fatal error: Uncaught exception 'SMTP_Validate_Email_Exception_Timeout' with message 'Timed out in recv' in C: \ xampp \ htdocs \ verif \ smtp-validate-email.php: 626
    Stack trace:
    # 0 C: \ xampp \ htdocs \ verif \ smtp -validate-email.php (650) SMTP_Validate_Email-> recv (3)
    # 1 C: \ xampp \ htdocs \ verif \ smtp-validate-email.php (554) SMTP_Validate_Email-> expect (Array, 3)
    # 2 C: \ xampp \ htdocs \ verif \ smtp-validate-email.php (311) SMTP_Validate_Email-> rset ()
    # 3 C: \ xampp \ htdocs \ verif \ index.php (28): SMTP_Validate_Email-> validate ()
    # 4 {main} thrown in C: \ xampp \ htdocs \ verif \ smtp-validate-email.php on line 626
    
    $email = $row['mail'];
    
    $validator = new SMTP_Validate_Email($email, $from);
    $emailError = false;
    
        try 
        {
            $smtp_results = $validator->validate();
        } 
        catch (Exception $e) 
        {
            $emailError = true;
        }
    
        $mail=str_replace(' ','',$row['mail']);
        // var_dump($smtp_results);
        if($smtp_results[$email] && !$emailError)
        {
            $sql1="UPDATE  mailvalid SET  statut = 1 WHERE  id =".$row['id']."";
            mysql_query($sql1) or  die(mysql_error());
        }
        else
        {
            $emailError = false;
            $sql2="INSERT INTO mailnonvalid (mail) VALUES ('".$row['mail']."')";
            mysql_query($sql2) or  die(mysql_error());
    
            $sql3="DELETE FROM mailvalid WHERE id = ".$row['id']."";
            mysql_query($sql3) or  die(mysql_error());
        }
        // var_dump($email);
        echo $row['id'].'</br>';