如何解决fsockopen 超时取决于我的位置
我正在使用 PHP 编写脚本,但遇到了问题,我有一个功能可以检查某个人的电子邮件是否存在,这在我家中运行良好,但无法形成我的工作。
function validate_email($email) {
if(!preg_match ("/^[\w\.-]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]+$/",$email)){
print("false not a mail with valid format");
return(false);
}
$lines = array();
list($prefix,$domain) = explode("@",$email);
if(getmxrr($domain,$mx,$weight) == 0) {
file_put_contents("result.txt","\nemail not found : " . $domain . " no MX record",FILE_APPEND);
print("false,no mxrecord");
return(false);
}
if(isset($mx[0])) {
$connect = @fsockopen($mx[0],25,$errno,$errstr,10);
if(!$connect) {
echo "ERROR: " . $mx[0] . " - " . $errstr . " - Code " . $errno . "\n";
file_put_contents("result.txt","\nemail not found : " . "ERROR : " . $mx[0] . " - " . $errstr . " - Code " . $errno,FILE_APPEND);
return (false);
}
else {
echo "\nSUCCESS: ok";
$lines[] = fgets ($connect,1024);
fputs ($connect,"HELO ".$mx[0]."\r\n");
sleep (2);
$lines[] = fgets ($connect,"MAIL FROM: <mailvalidate@mailtest.com>\r\n");
sleep (2);
$lines[] = fgets ($connect,"RCPT TO: <".$email.">\r\n");
sleep (2);
$lines[] = fgets ($connect,"QUIT");
sleep (2);
fclose($connect);
if (count($lines) == 4){
list($returnStatus,$message) = explode(' ',$lines[3]);
if($returnStatus == '250') {
print("valid : " . $email);
file_put_contents("result.txt","\nEmail : " . $email,FILE_APPEND);
return(true);
}
}
}
}
file_put_contents("result.txt","\nemail not found : " . $email,FILE_APPEND);
print("\nemail not found : " . $email);
return(false);
}
这给我一个错误:“连接超时 - 代码 110” 错误在这一行: $connect = @fsockopen($mx[0],587,10);
我尝试将端口更改为 587,但仍然无法正常工作。 我确实运行了一个 traceroute,它跳了 15 次,然后没有响应。 无论域名如何,它都会犯同样的错误,所以我认为我的工作连接有问题。
我怀疑我工作中的防火墙阻止了数据,但现在由于无法访问它,我正在尝试其他解决方案。
Sry 英语不好,感谢阅读 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。