【发布时间】:2016-07-08 08:56:43
【问题描述】:
我需要使用代理 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);
?>
它不工作我不知道为什么?
socat 命令可以在这种情况下提供帮助吗?或者是否有任何解决方案或替代解决方案可以实现这一目标?
【问题讨论】:
标签: php email proxy phpmailer fsockopen