[摘要] 判断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.163.com");
foreach ($site as $value) {
echo gethost($value);
}