如何通过PHP检查我的脚本是否连接到SMTP服务器

如何通过PHP检查我的脚本是否连接到SMTP服务器

问题描述:

只是标题说了什么。 想知道如何检查连接是否正常工作,如果没有,是什么错误。 Btw SMTP服务器交换2007年。如何通过PHP检查我的脚本是否连接到SMTP服务器

如果你想知道你是否可以从任何地方访问SMTP服务器运行PHP,那么你只需要连接到它在适当的端口(默认25),并看到如果你在结果中找回“220”代码。

$f = fsockopen('smtp host', 25) ; 
if ($f !== false) { 
    $res = fread($f, 1024) ; 
    if (strlen($res) > 0 && strpos($res, '220') === 0) { 
     echo "Success!" ; 
    } 
    else { 
     echo "Error: " . $res ; 
    } 
} 
fclose($f) ; 

由于这是最有可能与您的其他问题:Configure mail server to work with PHP,我会在这里把答案过于:

您正在使用PEAR邮件包。 send()方法在成功时返回TRUE,否则返回PEAR_Error对象,其中将包含失败的详细信息。很可能你会想要$ PEAR_Error :: message。全部细节在这里:Configure mail server to work with PHP

它可能是由于你的SMTP端口是不允许的防火墙,以便尝试这个PHP脚本来检查开放的端口,它是具有最大热门港口检查:

<?php 

$ports[] = array('host'=>'interspire.smtp.com','number'=>25); 
$ports[] = array('host'=>'interspire.smtp.com','number'=>2525); 
$ports[] = array('host'=>'interspire.smtp.com','number'=>25025); 
$ports[] = array('host'=>'helpme.interspire.smtp.com','number'=>80); 

$ports[] = array('host'=>'google.com','number'=>80); 
$ports[] = array('host'=>'smtp.gmail.com','number'=>587); 
$ports[] = array('host'=>'smtp.gmail.com','number'=>465); 
$ports[] = array('host'=>'pop.gmail.com','number'=>995); 
$ports[] = array('host'=>'imap.gmail.com','number'=>993); 

$ports[] = array('host'=>'ftp.mozilla.org','number'=>21); 
$ports[] = array('host'=>'smtp2go.com','number'=>8025); 

$ports[] = array('host'=>'relay.dnsexit.com','number'=>25); 
$ports[] = array('host'=>'relay.dnsexit.com','number'=>26); 
$ports[] = array('host'=>'relay.dnsexit.com','number'=>940); 
$ports[] = array('host'=>'relay.dnsexit.com','number'=>8001); 
$ports[] = array('host'=>'relay.dnsexit.com','number'=>2525); 
$ports[] = array('host'=>'relay.dnsexit.com','number'=>80); 

$ports[] = array('host'=>'mail.authsmtp.com','number'=>23); 
$ports[] = array('host'=>'mail.authsmtp.com','number'=>25); 
$ports[] = array('host'=>'mail.authsmtp.com','number'=>26); 
$ports[] = array('host'=>'mail.authsmtp.com','number'=>2525); 

foreach ($ports as $port) 
{ 
    //$connection = @fsockopen($port['host'], $port['number']); 
    $connection = @fsockopen($port['host'], $port['number'], $errno, $errstr, 5); // 5 second timeout for each port. 

    if (is_resource($connection)) 
    { 
     echo '<h2>' . $port['host'] . ':' . $port['number'] . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.</h2>' . "\n"; 

     fclose($connection); 
    } 

    else 
    { 
     echo '<h2>' . $port['host'] . ':' . $port['number'] . ' is not responding.</h2>' . "\n"; 
    } 
} 


?> 

来源自:https://www.interspire.com/support/kb/getattachment.php?data=MTA2OHxwb3J0Y2hlY2sucGhw