0

大学のクラブのウェブサイトを作り、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に投稿しました。

4

1 に答える 1

1

Try/catchはPHP5バージョンでのみ使用できます。テストを実行するには、他のエラーキャッチ(if / else)を実行する必要があります。

于 2012-10-02T20:03:08.750 に答える