Zak*_*rki 8 php email proxy phpmailer fsockopen
我需要使用代理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, 334);
fputs($socket, base64_encode($password)."\r\n");
$output = fgets($socket, 235);
fputs($socket, "HELO $server \r\n");
$output = fgets($socket, 515);
?>
Run Code Online (Sandbox Code Playgroud)
它不起作用我不知道为什么?
可以socat命令可以帮助在这种情况下,还是有任何解决方案或替代解决方案,以实现这一目标?
我终于使用socat找到了解决方案,请按照以下步骤操作:
首先,您需要socat在服务器上安装,只需使用以下命令即可完成:
yum install socat
Run Code Online (Sandbox Code Playgroud)然后运行以下socat命令来PROXY_IP:PORT绑定HOST_ESP:PORT:
socat TCP4-LISTEN:proxy_port,bind=proxy_IP,fork,su=nobody TCP4:host:port,bind=proxy_IP
Run Code Online (Sandbox Code Playgroud)然后,HOST_ESP:PORT您可以使用 并将其PROXY_IP:PORT自动重定向到使用 的socat输出,而不是通过它发送到 ESP 。HOST_ESP:PORTPROXY_IP:PORT
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
5024 次 |
| 最近记录: |