我正在尝试从代理后面连接到外部 SMTP 服务器。我想出了如何让 fsockopen 从代理后面获取网站,但不知道如何连接到 SMTP 服务器。SMTP 服务器需要 TLS 连接以及用户名和密码身份验证。
我从代理后面获取网页的内容是以下代码。
<?
$proxy_fp = fsockopen('111.111.111.111', '80');
if (!$proxy_fp) {
return false;
}
fputs($proxy_fp, "GET http://wwww.google.com HTTP/1.0\r\nHost: 111.111.111.111\r\n\r\n");
while (!feof($proxy_fp)) {
$proxy_cont .= fread($proxy_fp, 4096);
}
fclose($proxy_fp);
$proxy_cont = substr($proxy_cont, strpos($proxy_cont, "\r\n\r\n") + 4);
return $proxy_cont;
?>
现在如何让代理连接到 SMTP 服务器?
- - 编辑 - -
<?
$s = "\r\n";
$proxy = '24.47.131.253';
$port = 8123;
$fp = fsockopen($proxy, $port);
socket_set_timeout($fp, 10, 0);
fputs($fp, "CONNECT smtp.domain.com:25 HTTP/1.0".$s.$s);
while(!feof($fp)){
$line = fgets($fp, 4000);
echo $line."\n";
}
fclose($fp);
?>
我现在有这个基于答案。问题是我没有从 SMTP 服务器得到响应,它只是打印空行。有人能指出我正确的方向吗?