15

我正在尝试使用 PHPMailer 通过 SMTP 和 gmail 发送电子邮件。正在使用的确切脚本适用于其他服务器,但不适用于该特定托管公司的服务器。

我检查了phpinfo()它,它告诉我这allow_url_fopenon并且没有列出的disabled_functions类似内容fopen

脚本失败,它告诉我:

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

要不然

SMTP Error: Could not authenticate.

我假设这是因为它无法连接,因为这又在其他服务器上工作并且身份验证凭据是正确的。

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

4

1 回答 1

23

您可以使用以下命令检查打开/可用端口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 服务器,以防止垃圾邮件发送者中继垃圾邮件。

于 2012-04-12T16:49:28.847 回答