代码之家  ›  专栏  ›  技术社区  ›  Tugkan

PHPMailer给出错误消息:“PHP解析错误:解析错误,第23行mailer.PHP中意外的‘{’”

  •  0
  • Tugkan  · 技术社区  · 12 年前

    我为我大学的一个俱乐部做了一个网站,我用了PHPMailer。当我在自己的服务器上尝试时,它运行得很好。然而,当我把网站上传到学校的FTP后,我的PHPMailer就不工作了。我联系了学校的IT部门,他们说:“服务器上的PHP版本是4.3.9。您编写的代码必须适合它。在服务器的错误日志中,我们得到了以下错误:PHP解析错误:解析错误,第23行mailer.PHP中意外的“{”。 我检查了我的代码十亿次,但我无法解决这个问题。这是我的代码:

    <?
    if(!empty($_POST['sender_mail'])
        || !empty($_POST['sender_name'])
        || !empty($_POST['sender_surname'])
        || !empty($_POST['sender_major'])
        || !empty($_POST['sender_schoolyear'])
        || !empty($_POST['sender_id']))
    {
      phpinfo();
        require_once('class.phpmailer.php');
        include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
        $smail = $_POST['sender_mail'];
        $name = $_POST['sender_name'];
        $surname = $_POST['sender_surname'];
        $major = $_POST['sender_major'];
        $schoolyear = $_POST['sender_schoolyear'];
        $id = $_POST['sender_id'];
    
        $mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
    
        $mail->IsSMTP(); // telli ng the class to use SMTP
    
        try { // Here is 23th line
          $mail->SMTPAuth   = true;                  // enable SMTP authentication
          $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
          $mail->Host       = "smtp.gmail.com";      // sets GMAIL as the SMTP server
          $mail->Port       = 465;                   // set the SMTP port for the GMAIL server
          $mail->Username   = "xxxxx@gmail.com";  // GMAIL username
          $mail->Password   = "xxxxxxx";            // GMAIL password
          $mail->AddAddress('xxxxx@gmail.com', 'Membership');
          $mail->SetFrom('xxxxx@gmail.com', 'GGK');
          $mail->Subject = 'New Membership';
          $mail->IsHTML(true);
          $mail->Body = '<h3>New Membership</h3><br/><i><b>Name: </i></b><i>' . $name . '</i><br/><b><i>Surname: </i></b><i>' . $surname . '</i><br/><b><i>Mail: </i></b><i>' . $smail . '</i><br/><b><i>ID: </i></b><i>' . $id .  '</i><br/><b><i>Schoolyear: </b></i><i>' . $schoolyear . '</i><br/><b><i>Major: </b></i><i>' . $major . '</i>';
          $mail->Send();
          echo "Message Sent OK</p>\n";
        } catch (phpmailerException $e) {
            echo -1;
          echo $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
          echo -1;  
          echo $e->getMessage(); //Boring error messages from anything else!
        }
    }
    else{
        echo -1;
    }
    ?>
    

    注意:我用ajax获得了表单的所有值,并将它们发布到mailer.php。

    1 回复  |  直到 12 年前
        1
  •  1
  •   aynber    12 年前

    Try/catch仅在PHP5版本中提供。为了进行测试,您需要进行其他错误捕获(if/else)。