Как проверить, по PHP, если мой скрипт подключается к SMTP-серверу

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

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

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

    Вы используете пакет PEAR Mail. Метод send() возвращает TRUE при успешном PEAR_Error или объект PEAR_Error противном случае, который будет содержать сведения об PEAR_Error . Скорее всего, вам понадобится сообщение $ PEAR_Error ::. Полная информация здесь: настройка почтового сервера для работы с 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