我自己的电脑上安装了xampp,可以通过phpmailer给指定的邮箱发送邮件,但我上传到服务器(163ns的免费试用空间)就不行了,请问这是为什么?代码如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head><body>
<p>在php外部</p>
<?php
echo "在if外部!";
require("class.phpmailer.php");if($_POST['Submit'])
{
echo "进入if内部!";
$mail = new PHPMailer();
echo "$mail = new PHPMailer();";

$mail->IsSMTP();                                      // set mailer to use SMTP
$mail->Host = "smtp.sina.com";  // specify main and backup server
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "[email protected]";  // SMTP username
$mail->Password = "password"; // SMTP password

$mail->From = "[email protected]";
$mail->FromName = "Mailer";
$mail->AddAddress("[email protected]");                  // name is optional
$mail->AddReplyTo("[email protected]", "Information");

$mail->WordWrap = 50;                                 // set word wrap to 50 characters
$mail->IsHTML(true);                                  // set email format to HTML

$mail->Subject = "测试邮件";
$mail->Body    = "测试的邮件";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
   echo "Message could not be sent. <p>";
   echo "Mailer Error: " . $mail->ErrorInfo;
   exit;
}

echo "Message has been sent";
}
?></body>
</html>运行到echo "在if外部!"; , 后面的就不行了这应该说明服务器还是支持php解析的吧?

解决方案 »

  1.   

    require("class.phpmailer.php");这句话都没执行的话,就查看下文件路径。
      

  2.   


    这个在自己电脑上可以运行,但上传到服务器上就不行了。
    我是菜鸟,第一次上传php的文件到服务器上。
    你说的看文件路径怎么看呢或者说上传到服务器要先做什么工作才能使文件在服务器上运行require("class.phpmailer.php");???
      

  3.   


    看你服务器配置mail邮件服务器了吗
      

  4.   

    最好用mail函数 phpmailer官方早就不更新了
      

  5.   


    直接用mail函数好像不太好吧?我在自己电脑上测试时不是收不到邮件就是把我发的邮件当垃圾处理了
      

  6.   


    这个我不是太懂
    但我用phpmailer在自己电脑上(直接装的xampp集成了要用到的东西)就没有问题,但上传到人家的服务器后就不行了。require("class.phpmailer.php"); 都不能运行
    2楼说要看路径,是不是说要把包含phpmailer的文件也弄到服务器上去呢?不懂见笑了
      

  7.   

    <? 
    class smtp 

    /* Public Variables */ 
    var $smtp_port; 
    var $time_out; 
    var $host_name; 
    var $log_file; 
    var $relay_host; 
    var $debug; 
    var $auth; 
    var $user; 
    var $pass; /* Private Variables */ 
    var $sock; /* Constractor */ 
    function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass) 

    $this->debug = FALSE; 
    $this->smtp_port = $smtp_port; 
    $this->relay_host = $relay_host; 
    $this->time_out = 30; //is used in fsockopen() 

    $this->auth = $auth;//auth 
    $this->user = $user; 
    $this->pass = $pass; 

    $this->host_name = "localhost"; //is used in HELO command 
    $this->log_file =""; $this->sock = FALSE; 
    } /* Main Function */ 
    function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "") 

    $mail_from = $this->get_address($this->strip_comment($from)); 
    $body = ereg_replace("(^|(\r\n))(\\.)", "\\1.\\3", $body); 
    $header .= "MIME-Version:1.0\r\n"; 
    if($mailtype=="HTML"){ 
    $header .= "Content-Type:text/html\r\n"; 

    $header .= "To: ".$to."\r\n"; 
    if ($cc != "") { 
    $header .= "Cc: ".$cc."\r\n"; 

    $header .= "From: $from <".$from.">\r\n"; 
    $header .= "Subject: ".$subject."\r\n"; 
    $header .= $additional_headers; 
    $header .= "Date: ".date("r")."\r\n"; 
    $header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n"; 
    list($msec, $sec) = explode(" ", microtime()); 
    $header .= "Message-ID: <".date("YmdHis", $sec).".".($msec*1000000).".".$mail_from.">\r\n"; 
    $TO = explode(",", $this->strip_comment($to)); if ($cc != "") { 
    $TO = array_merge($TO, explode(",", $this->strip_comment($cc))); 
    } if ($bcc != "") { 
    $TO = array_merge($TO, explode(",", $this->strip_comment($bcc))); 
    } $sent = TRUE; 
    foreach ($TO as $rcpt_to) { 
    $rcpt_to = $this->get_address($rcpt_to); 
    if (!$this->smtp_sockopen($rcpt_to)) { 
    $this->log_write("Error: Cannot send email to ".$rcpt_to."\n"); 
    $sent = FALSE; 
    continue; 

    if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) { 
    $this->log_write("E-mail has been sent to <".$rcpt_to.">\n"); 
    } else { 
    $this->log_write("Error: Cannot send email to <".$rcpt_to.">\n"); 
    $sent = FALSE; 

    fclose($this->sock); 
    $this->log_write("Disconnected from remote host\n"); 

    echo " <br>"; 
    echo $header; 
    return $sent; 
    } /* Private Functions */ function smtp_send($helo, $from, $to, $header, $body = "") 

    if (!$this->smtp_putcmd("HELO", $helo)) { 
    return $this->smtp_error("sending HELO command"); 

    #auth 
    if($this->auth){ 
    if (!$this->smtp_putcmd("AUTH LOGIN", base64_encode($this->user))) { 
    return $this->smtp_error("sending HELO command"); 
    } if (!$this->smtp_putcmd("", base64_encode($this->pass))) { 
    return $this->smtp_error("sending HELO command"); 



    if (!$this->smtp_putcmd("MAIL", "FROM: <".$from.">")) { 
    return $this->smtp_error("sending MAIL FROM command"); 
    } if (!$this->smtp_putcmd("RCPT", "TO: <".$to.">")) { 
    return $this->smtp_error("sending RCPT TO command"); 
    } if (!$this->smtp_putcmd("DATA")) { 
    return $this->smtp_error("sending DATA command"); 
    } if (!$this->smtp_message($header, $body)) { 
    return $this->smtp_error("sending message"); 
    } if (!$this->smtp_eom()) { 
    return $this->smtp_error("sending <CR> <LF>. <CR> <LF> [EOM]"); 
    } if (!$this->smtp_putcmd("QUIT")) { 
    return $this->smtp_error("sending QUIT command"); 
    } return TRUE; 
    } function smtp_sockopen($address) 

    if ($this->relay_host == "") { 
    return $this->smtp_sockopen_mx($address); 
    } else { 
    return $this->smtp_sockopen_relay(); 

    } function smtp_sockopen_relay() 

    $this->log_write("Trying to ".$this->relay_host.":".$this->smtp_port."\n"); 
    $this->sock = @fsockopen($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); 
    if (!($this->sock && $this->smtp_ok())) { 
    $this->log_write("Error: Cannot connenct to relay host ".$this->relay_host."\n"); 
    $this->log_write("Error: ".$errstr." (".$errno.")\n"); 
    return FALSE; 

    $this->log_write("Connected to relay host ".$this->relay_host."\n"); 
    return TRUE;; 
    } function smtp_sockopen_mx($address) 

    $domain = ereg_replace("^.+@([^@]+)$", "\\1", $address); 
    if (!@getmxrr($domain, $MXHOSTS)) { 
    $this->log_write("Error: Cannot resolve MX \"".$domain."\"\n"); 
    return FALSE; 

    foreach ($MXHOSTS as $host) { 
    $this->log_write("Trying to ".$host.":".$this->smtp_port."\n"); 
    $this->sock = @fsockopen($host, $this->smtp_port, $errno, $errstr, $this->time_out); 
    if (!($this->sock && $this->smtp_ok())) { 
    $this->log_write("Warning: Cannot connect to mx host ".$host."\n"); 
    $this->log_write("Error: ".$errstr." (".$errno.")\n"); 
    continue; 

    $this->log_write("Connected to mx host ".$host."\n"); 
    return TRUE; 

    $this->log_write("Error: Cannot connect to any mx hosts (".implode(", ", $MXHOSTS).")\n"); 
    return FALSE; 
    } function smtp_message($header, $body) 

    fputs($this->sock, $header."\r\n".$body); 
    $this->smtp_debug("> ".str_replace("\r\n", "\n"."> ", $header."\n> ".$body."\n> ")); return TRUE; 
    } function smtp_eom() 

    fputs($this->sock, "\r\n.\r\n"); 
    $this->smtp_debug(". [EOM]\n"); return $this->smtp_ok(); 
    } function smtp_ok() 

    $response = str_replace("\r\n", "", fgets($this->sock, 512)); 
    $this->smtp_debug($response."\n"); if (!ereg("^[23]", $response)) { 
    fputs($this->sock, "QUIT\r\n"); 
    fgets($this->sock, 512); 
    $this->log_write("Error: Remote host returned \"".$response."\"\n"); 
    return FALSE; 

    return TRUE; 
    } function smtp_putcmd($cmd, $arg = "") 

    if ($arg != "") { 
    if($cmd=="") $cmd = $arg; 
    else $cmd = $cmd." ".$arg; 
    } fputs($this->sock, $cmd."\r\n"); 
    $this->smtp_debug("> ".$cmd."\n"); return $this->smtp_ok(); 
    } function smtp_error($string) 

    $this->log_write("Error: Error occurred while ".$string.".\n"); 
    return FALSE; 
    } function log_write($message) 

    $this->smtp_debug($message); if ($this->log_file == "") { 
    return TRUE; 
    } $message = date("M d H:i:s ").get_current_user()."[".getmypid()."]: ".$message; 
    if (!@file_exists($this->log_file) || !($fp = @fopen($this->log_file, "a"))) { 
    $this->smtp_debug("Warning: Cannot open log file \"".$this->log_file."\"\n"); 
    return FALSE; 

    flock($fp, LOCK_EX); 
    fputs($fp, $message); 
    fclose($fp); return TRUE; 
    } function strip_comment($address) 

    $comment = "\\([^()]*\\)"; 
    while (ereg($comment, $address)) { 
    $address = ereg_replace($comment, "", $address); 
    } return $address; 
    } function get_address($address) 

    $address = ereg_replace("([ \t\r\n])+", "", $address); 
    $address = ereg_replace("^.* <(.+)>.*$", "\\1", $address); return $address; 
    } function smtp_debug($message) 

    if ($this->debug) { 
    echo $message." <br>"; 

    } function get_attach_type($image_tag) { // $filedata = array(); $img_file_con=fopen($image_tag,"r"); 
    unset($image_data); 
    while ($tem_buffer=AddSlashes(fread($img_file_con,filesize($image_tag)))) 
    $image_data.=$tem_buffer; 
    fclose($img_file_con); $filedata['context'] = $image_data; 
    $filedata['filename']= basename($image_tag); 
    $extension=substr($image_tag,strrpos($image_tag,"."),strlen($image_tag)-strrpos($image_tag,".")); 
    switch($extension){ 
    case ".gif": 
    $filedata['type'] = "image/gif"; 
    break; 
    case ".gz": 
    $filedata['type'] = "application/x-gzip"; 
    break; 
    case ".htm": 
    $filedata['type'] = "text/html"; 
    break; 
    case ".html": 
    $filedata['type'] = "text/html"; 
    break; 
    case ".jpg": 
    $filedata['type'] = "image/jpeg"; 
    break; 
    case ".tar": 
    $filedata['type'] = "application/x-tar"; 
    break; 
    case ".txt": 
    $filedata['type'] = "text/plain"; 
    break; 
    case ".zip": 
    $filedata['type'] = "application/zip"; 
    break; 
    default: 
    $filedata['type'] = "application/octet-stream"; 
    break; 

    return $filedata; 
    } } 
    ?> 
      

  8.   

    <? require_once ('email.class.php'); 
    //########################################## 
    $smtpserver = "smtp.163.com";//SMTP服务器 
    $smtpserverport =25;//SMTP服务器端口 
    $smtpusermail = "[email protected]";//SMTP服务器的用户邮箱 
    $smtpemailto = "[email protected]";//发送给谁 
    $smtpuser = "mailusername";//SMTP服务器的用户帐号 
    $smtppass = "password";//SMTP服务器的用户密码 
    $mailsubject = "test subject";//邮件主题 
    $mailbody = " <h1> 这是一个测试程序 PHP100.com </h1>";//邮件内容 
    $mailtype = "HTML";//邮件格式(HTML/TXT),TXT为文本邮件 
    ########################################## 
    $smtp = new smtp($smtpserver,$smtpserverport,true,$smtpuser,$smtppass);//这里面的一个true是表示使用身份验证,否则不使用身份验证. 
    $smtp->debug = FALSE;//是否显示发送的调试信息 
    $smtp->sendmail($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype); ?>
      

  9.   

    问题是解决了,我把phpmailer的压缩包全部一股脑给解压上传到服务器上就可以了。
    感觉这是很笨的办法,也会占用服务器空间的吧?
    在服务器上使用phpmailer具体该做什么工作还是不太懂。谁能告诉我就太好了!!!结贴给分啦!