我正在使用 PHPMailer,它使用 fsockopen
访问 SMTP 服务器。
但是机器有两个不同反向DNS记录的IP。所以在电子邮件标题中我得到了以下内容:
Received: from one-server.tld (HELO another-server.tld) ...
我需要隐藏 one-server.tld
以支持 another-server.tld
。但是我需要这两个 IP 及其当前的 RDNS 设置。
最佳答案
我认为使用 fsockopen
是不可能的。但在 curl
、fopen
和 stream
函数中是可能的。你需要的是stream_socket_client()功能。
这里有一些实现它的方法。
使用可在 fopen 函数族和流函数族中使用的上下文参数。请参阅示例。
$opts = array( 'socket' => array( 'bindto' => '192.168.0.100:0', ), ); // create the context... $context = stream_context_create($opts); $contents = fopen('http://www.example.com', 'r', false, $context);
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $opts); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n"); while (!feof($fp)) { echo fgets($fp, 1024); } fclose($fp); }
使用 socket_bind . PHP.NET 得到了一个简单的例子 here .
关于php - 我可以从特定 IP(如果机器有两个 IP)在 PHP 中打开套接字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8967947/