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_结果中
试试看,看情况如何 您最好忽略它,因为:
必须在类本身中修复此错误…是否可能在检测到此错误时,删除此电子邮件地址并继续分析检查上述内容是否正常
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>';