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

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

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

Сценарий выходит из строя, и он говорит мне:

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

или иначе

 SMTP Error: Could not authenticate. 

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

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

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

Вы можете проверить открытые / доступные порты с помощью 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-серверу, чтобы спамеры не могли передавать ретрансляцию нежелательной почты.