Как я могу проверить, открыты ли порты 465 и 587 с PHP?
Я пытаюсь использовать PHPMailer для отправки электронной почты с SMTP и gmail. Точный скрипт, который я использую, работает на других серверах, но он не работает на сервере этой хостинговой компании.
Я проверил phpinfo()
и это говорит мне о том, что allow_url_fopen
is on
и нет disabled_functions
как fopen
в списке.
сценарий терпит неудачу, и он говорит мне:
SMTP -> ERROR: Failed to connect to server: Connection timed out (110)
или
SMTP Error: Could not authenticate.
Я предполагаю, что это потому, что он не может подключиться, потому что снова эта работа на других серверах и учетные данные проверки подлинности верны.
поэтому я спрашиваю в более общем плане, есть ли способ использовать PHP или jailshell ssh
чтобы проверить и посмотреть, действительно ли порты открыты или нет?
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-серверу, чтобы предотвратить передачу нежелательной почты спамерами.