我正在尝试使用PHPMailer发送带有SMTP和Gmail的电子邮件。我使用的确切脚本适用于其他服务器,但它不能在这个特定的托管公司的服务器上运行。
我检查了phpinfo()
,它告诉我allow_url_fopen
是on
而且disabled_functions
没有列出fopen
。
脚本失败,它告诉我:
SMTP -> ERROR: Failed to connect to server: Connection timed out (110)
或者
SMTP Error: Could not authenticate.
我假设这是因为它无法连接,因为这在其他服务器上的工作和身份验证凭据都是正确的。
所以我更一般地问,有没有办法可以使用PHP或jailshell ssh
检查端口是否实际打开?
答案 0 :(得分: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服务器,以防止垃圾邮件发送者转发垃圾邮件。