3

我有一个非常简单的代码片段,它使用 fsockopen(或 stream_socket-client)连接到 SMTP 服务器,如下所示:

<?php
$url = gethostbyname("mx6.go2.pl");
echo $url;
$fp = fsockopen($url, 587, $errno, $errstr, 10);
if (!$fp) {
echo "port is closed or blocked"
} else {
echo "port is open and available";
fclose($fp);
}
?>

不幸的是,我无法连接到任何标准端口,例如 25,587 或 2525,因为我的两个主机提供商都在阻止使用这些端口的任何出站连接。(我只能通过 25 或 587 连接到内部 SMTP 服务器或 localhost)

有没有办法使用不同的代码或端口来解决这个问题(我的意思是通过编程而不是像安装我自己的服务器那样)。

干杯,

马尔钦

4

1 回答 1

1

如果您的提供商阻止了这些出站端口,那么您将无能为力。这些是标准 SMTP 端口,因此 SMTP 服务器不太可能接受其他端口上的连接。您唯一的希望是要求您的提供商为您的帐户取消阻止这些端口,或者找到一个基于 HTTP 的外部代理服务器以连接到端口 80(除非您的提供商也阻止了该出站端口)。

为什么不能使用提供商的内部 SMTP 服务器?这就是你应该做的。让它为您将您的消息中继到其他 SMTP 服务器。现在越来越多的 SMTP 服务器被锁定以防止垃圾邮件和其他滥用行为,因此您可能会遇到不允许您直接连接到它们的 SMTP 服务器,即使您可以访问它们的端口,因为您不是该服务器的白名单上的提供商。

于 2012-10-17T17:29:19.717 回答