如何检查端口465和587是否用PHP打开?

我试图使用PHPMailer发送电子邮件与SMTP和Gmail。 确切的脚本正在使用其他服务器,但它不是在这个特定的托pipe公司的服务器上工作。

我已经检查了phpinfo() ,它告诉我, allow_url_fopenon ,并没有像fopen列出的disabled_functions

脚本失败,它告诉我:

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

要不然

 SMTP Error: Could not authenticate. 

我假设这是因为它无法连接,因为再次在其他服务器上的这项工作和身份validation凭证是正确的。

所以我更一般地问,有没有一种方法可以使用PHP或jailshell ssh来检查端口是否实际打开?

您可以使用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服务器,以防止垃圾邮件发送者传播垃圾邮件。