我需要使用代理IP地址从
PHPMailer发送电子邮件,我知道这样做,我需要使用fsockopen函数,所以我可以连接到SMTP帐户,我也知道如果我必须连接到代理我必须再次使用fsockopen函数.但是在另一个fsockopen中使用它fsockopen是不可行的.
我有透明代理,不需要身份验证.我需要将其发送到外部电子邮件服务提供商的远程SMTP服务器.
我试过的代码:
<?PHP //SMTP params $server = 'smtp.espdomain.com'; $server_port = '25'; $username = 'smtp_login'; $password = 'smtp_pass'; //Proxy $proxy = '1.1.1.1'; $proxy_port = 1111; //Open connection $socket = fsockopen($proxy,$proxy_port); //Send command to proxy fputs($socket,"CONNECT $server:$server_port HTTP/1.0\r\nHost: $proxy\r\n\r\n"); fgets($socket,334); //SMTP authorization fputs($socket,"AUTH LOGIN\r\n"); fgets($socket,334); fputs($socket,base64_encode($username)."\r\n"); fgets($socket,base64_encode($password)."\r\n"); $output = fgets($socket,235); fputs($socket,"HELO $server \r\n"); $output = fgets($socket,515); ?>
它不起作用我不知道为什么?
我终于找到了使用
socat的解决方案,请按照以下步骤操作:
>首先,您需要在服务器上安装socat,只需使用以下命令即可:
yum install socat
>然后运行以下将使用HOST_ESP绑定PROXY_IP:PORT的socat命令:PORT:
socat TCP4-LISTEN:proxy_port,bind=proxy_IP,fork,su=nobody TCP4:host:port,bind=proxy_IP
>然后不是通过HOST_ESP:PORT发送到ESP,而是使用PROXY_IP:PORT,而socat将使用PROXY_IP:PORT的输出自动重定向到HOST_ESP:PORT.
希望这可以帮助.