我需要使用代理IP地址从PHPMailer发送电子邮件,我知道要实现这一点,我需要使用fsockopen函数连接SMTP账户,同时也知道如果我必须连接到代理,我必须再次使用fsockopen函数。但是,在另一个fsockopen内部使用它是不可行的。
我有透明代理且不需要身份验证。我需要将此发送到外部电子邮件服务提供商的远程SMTP服务器。
我尝试过的代码:
我有透明代理且不需要身份验证。我需要将此发送到外部电子邮件服务提供商的远程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);
?>
这个功能无法正常工作,原因未知。
在这种情况下,socat
命令是否有帮助,或者是否有其他解决方案和替代方案可以实现该功能?
proxy_IP
=您的服务器的主机名或IP。proxy_port
=您服务器中任何可用端口,这将成为您的应用程序连接到的SMTP端口。host:port
=这是实际的SMTP主机和端口,以该格式发送电子邮件。在您要使其成为代理的服务器上运行此命令。 - Sukanta Paul