Подтвердить что ты не робот

Как я могу проверить, открыты ли порты 465 и 587 с помощью PHP?

Я пытаюсь использовать PHPMailer для отправки электронной почты с помощью SMTP и gmail. Точный script am работает на других серверах, но не работает на этом сервере хостинговой компании.

Я проверил phpinfo(), и он сообщает мне, что allow_url_fopen - on, и нет disabled_functions, например fopen.

Ошибка script, и он также сообщает мне:

SMTP -> ERROR: Failed to connect to server: Connection timed out (110) 

или еще

SMTP Error: Could not authenticate.

Я предполагаю, что это связано с тем, что он не может подключиться, потому что снова эта работа на других серверах и учетные данные для проверки подлинности верны.

Итак, я спрашиваю в более общем плане, есть ли способ, с помощью которого я могу использовать PHP или jailshell ssh, чтобы проверить, действительно ли порты открыты или нет?

4b9b3361

Ответ 1

Вы можете проверить открытые/доступные порты с помощью fsockopen:

$fp = fsockopen('127.0.0.1', 25, $errno, $errstr, 5);
if (!$fp) {
    // port is closed or blocked
} else {
    // port is open and available
    fclose($fp);
}

... где 5 - это таймаут в секундах до тех пор, пока вызов не завершится с ошибкой.

Вероятно, это связано с проблемой межсетевого экрана, когда ваш хостинг-провайдер блокирует вас от подключения к исходящим сокетам и/или определенным портам. Имейте в виду, что очень обычная конфигурация безопасности блокирует исходящие SMTP-порты. В тот же день был заблокирован только порт 25, но я также начал замечать все больше и больше вариантов SSL.

Большинство провайдеров и хостинговых компаний позволят вам подключиться к собственному SMTP-серверу, чтобы спамеры не могли передавать ретрансляцию нежелательной почты.