本地测试了,发送邮件都成功,放到公司服务器上就不行了
公司的服务器是通过一个局域网另外的机器代理上的网,用的IE设置代理,phpmailer就发送失败了,请问是代理的问题吗,还是网上说的fsockopen 和pfsockopen 的问题,谢谢!!

解决方案 »

  1.   

    phpMailer 不支持代理
    或许你可以自己添上,但你的代理服务器也要配置邮件代理服务
      

  2.   

    那请问版主,用php要实现这种服务器通过代理上网的情况,有没有什么办法呢?谢谢
      

  3.   

    有,你只要先连接代理服务器即可
    我我没有可用的代理服务器,不可能给你调试通过的代码
    就给个以前写的使用 http 代理的代码供你参考吧//配置代理服务器
    $proxy_host="10.34.8.2"; 
    $proxy_port="8080";
    //配置欲打开的网页
    $url="http://bbs.yzvod.com/index.asp";//注意要加"http://"//对路径的处理,如果前面没有/,就加一个 
    function slashUrl($url) { 
    if(!ereg("^/",$url)) { 
    return "/".$url; 
    }else { 
    return $url; 
    }

    //对获得内容进行处理,去掉头部信息 
    function trimHeader($content){ 
    $array=split("\n\r",$content,"2"); 
    return trim($array["1"]); 
    } function http_fopen($host,$port="80"){ 
    global $proxy_host;
    global $proxy_port;
    if(empty($proxy_host)){ 
    $conn_host=$host; 
    $conn_port=$port; 
    } else{ 
    $conn_host=$proxy_host; 
    $conn_port=$proxy_port; 

    $path=slashurl($path);
    $abs_url=$host;
    //$abs_url="http://".$host.":".$port.$path; 
    $query="GET $abs_url HTTP/1.0\r\n". 
    //"HOST:$host:$port\r\n". 
    "User-agent:PHP/class http 0.1\r\n".
    "\r\n"; 
    $fp=fsockopen($conn_host,$conn_port); 
    if(!$fp){ 
    return false; 
    }else{ 
      fputs($fp,$query); 
      while(!feof($fp)) {
        $cc.=fgets($fp);
      }
      fclose($fp);
      $content=trimHeader($cc); 
      return $content;
    }

    //前面是主机地址,第二个参数是具体的目标 
    $http=http_fopen($url);if(!$http){ 
      echo"对不起,连接代理服务器出错!"; 
      exit; 
    }else{
     echo $http;
    }
      

  4.   

    非常感谢版主,你的意思是在我调用phpmailer的send之前,先执行你上面的连接代理这几段代码对吗?
      

  5.   

    测试了下,想问下版主第3行的$url代表什么意思呢?我只是想连上代理,有代理ip$proxy_host了,连上之后调用phpmailer发邮件就行了,那这个$url存在的意义是什么呢?谢谢