Как проверить по PHP, подключен ли мой скрипт к SMTP серверу - PullRequest
4 голосов
/ 09 сентября 2010

Просто то, что говорит название.Хотите узнать, как проверить, работает ли соединение, и если нет, в чем ошибка.Кстати, SMTP-сервер - это exchange 2007.

Ответы [ 3 ]

14 голосов
/ 09 сентября 2010

Если вы хотите узнать, можете ли вы получить доступ к 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) ;
0 голосов
/ 08 октября 2016

это может быть связано с тем, что ваш 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

0 голосов
/ 09 сентября 2010

Так как это, скорее всего, связано с вашим другим вопросом: Настройка почтового сервера для работы с PHP , я поставлю ответ и здесь:

Вы используете PEAR Mailпакет.Метод send() возвращает TRUE в случае успеха или объект PEAR_Error в противном случае, который будет содержать сведения об ошибке.Скорее всего, вы хотели бы $ PEAR_Error :: message.Полная информация здесь: Настройка почтового сервера для работы с PHP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...