fsockopen,由于目标机器积极拒绝,无法连接。(10061)的解决方案
2012-3-13 19:14 Tuesday  

分类: PHP 标签: 连接 去掉 邮件 保护 防病毒 评论(66) 浏览(111567)

用fsockopen连接25端口,提示“由于目标机器积极拒绝,无法连接。(10061)”。百度N久,才发现是该死的McAfee,去掉访问保护里的防病毒标准保护=》禁止群发邮件蠕虫发送邮件前的阻止的勾去掉就好了。。

这个问题我两年前就遇到过,可惜忘记了,唉,杯具。

 

顺便贴一段判断smtp连接的代码吧

<?
header('Content-Type:text/html;charset=utf-8');
function gethost($host) {
	$str = "";
    $gethost = gethostbyname($host);
    echo "尝试连接 $host ...<br>";
    if (!$gethost) {
        $str = "解析失败 (1)<HR>";
    } elseif ($gethost == $host) {
        $str = "解析失败 (2): 可能是一个无效的主机名<HR>";
    } else {
        echo "域名解析为 $gethost ...<br>";
        openhost($host);
    }
    echo $str;
}

function openhost($host) {  //连接主机
    if (function_exists('fsockopen')) {
        $fp = fsockopen($host, 25, &$errno, &$errstr, 60); 
    }
    elseif(function_exists('pfsockopen')) {
            echo "服务器不支持Fsockopen,尝试pFsockopen函数 ...<br>";
            $fp = pfsockopen($host, 25, &$errno, &$errstr, 60);
        }
        else
        exit('服务器不支持Fsockopen函数');
        if (!$fp) {
            echo "代号:$errno,<br>错误原因:$errstr<HR>";
        } else {
            echo "SMTP服务器连接ok!<br>";
            fwrite($fp, "");
            $out0 = fgets($fp, 128);
            if (strncmp($out0, "220", 3) == 0) { // 判断三位字符内容
                echo '220 SMTP服务端响应正常<HR>';
            } else {
                echo '服务器端错误<HR>';
            }
        }
    }

    $site = array("smtp.phpec.org");

    foreach ($site as $value) {
        echo gethost($value);
    }

+1 236

留下你的看法: