You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHPMailer SMTP联系表单报错:Undefined property求助

错误原因分析:Undefined property: PHPMailer\PHPMailer\Exception::$getMessage

问题描述

开发基于SMTP的联系表单时,提交数据触发如下错误:
Undefined property: PHPMailer\PHPMailer\Exception::$getMessage in C:\xampp\htdocs\contact\mail.php on line 32

关联PHP代码

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require_once 'PHPMailer/src/Exception.php';
require_once 'PHPMailer/src/PHPMailer.php';
require_once 'PHPMailer/src/SMTP.php';
$mail = new PHPMailer (true);
$alert = '';
    if (isset($_POST['submit'])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];

    try{
        $mail->isSMTP();
        $mail->Host = 'smtp.gmail.com';
        $mail->SMTPAuth = true;
        $mail->Username = 'myEmail@gmail.com';
        $mail ->Password = 'appPassword';
        $mail->SMTPSecure = "tls";
        $mail->Port = '587';
        $mail->setFrom( 'myEmail@gmail.com');
        $mail->addAddress('myEmail@gmail.com');
        $mail->isHTML (true);
        $mail->Subject = 'Message Received from Contact: ' . $name;
        $mail->Body = "Name: $name <br>Email: $email<br>Subject: $subject<br>Message: $message";
        $mail->send();
        $alert= "<div class='alert-success'><span>Message Sent! Thanks for contact us.</span></div>";
    } catch (Exception $e) {
        $alert = "<div class='alert-error'><span>' . $e->getMessage().'</span></div>";
        }
}
?>

关联表单代码

<form name="form1" method="post">
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
            <input type="text" class="form-control input-lg" name="name" id="name" placeholder="Enter name" required="required" />
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <input type="email" class="form-control input-lg" name="email" id="email" placeholder="Enter email" required="required" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <input type="text" class="form-control input-lg" name="subject" id="subject" placeholder="Subject" required="required" />
            </div>
        </div>
    </div>
    <div class="col-md-12"><?php echo $alert; ?></div>
    <div class="row">
        <div class="col-md-12">
            <div class="form-group">
                <textarea name="message" id="message" class="form-control" rows="4" cols="25" required="required" placeholder="Message" style="height: 170px"></textarea>
            </div>                       
            <button type="submit" class="btn btn-skin btn-block" name="submit" id="submitcontact">Submit</button>
        </div>
    </div>
</form>

错误原因及修复方案

核心错误原因

catch块的字符串拼接存在语法混乱:你用双引号包裹整个字符串,但内部错误混入了单引号和拼接符号,导致PHP解析时忽略了getMessage()的方法调用括号,将$e->getMessage误判为访问不存在的属性,从而触发错误。

修复代码

将catch块代码修改为以下任意一种正确写法:

写法1:双引号正确拼接

catch (Exception $e) {
    $alert = "<div class='alert-error'><span>" . $e->getMessage() . "</span></div>";
}

写法2:单引号包裹拼接

catch (Exception $e) {
    $alert = '<div class="alert-error"><span>' . $e->getMessage() . '</span></div>';
}

额外优化点

修正$mail ->Password中的多余空格,改为$mail->Password,避免潜在的语法解析问题。

内容的提问来源于stack exchange,提问作者Juman Bw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 22:40:30