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

PHPMailer运行报Parse error: unexpected token "if"(第23行)如何解决?

问题修复方案

语法错误修复(直接解决unexpected "if"报错)

你代码第13行的属性调用存在标识符冲突:
你当前写的是$mail->SMTP = "true";,而你已经通过use PHPMailer\PHPMailer\SMTP;导入了SMTP类,PHP解析此处时会将SMTP识别为类名而非属性名,导致语句解析异常,后续的if语句被判定为非法标记。
PHPMailer中开启SMTP认证的正确属性为SMTPAuth,直接赋值布尔值即可,不需要用字符串包裹:

$mail->SMTPAuth = true;

其他运行错误修复

如果只改语法问题,代码还是无法正常发信,还需要修正以下几处错误:

  • SMTP服务器地址拼写错误:原代码smtp.gamil.com改为smtp.gmail.com
  • 密码属性大小写错误:原代码$mail->password改为$mail->Password(PHPMailer属性严格区分大小写)
  • 发件人设置方法名大小写错误:原代码$mail->setfrom改为$mail->setFrom
  • 端口号无需加引号,直接赋值数字即可:$mail->Port = 587;

完整修复后代码

<?php
require 'includes/PHPMailer.php';
require 'includes/SMTP.php';
require 'includes/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->Username = "astaquag@gmail.com";
$mail->Password = "*******";
$mail->Subject = "Mail from Astaqua.com";
$mail->setFrom("astaquag@gmail.com");
$mail->Body = "A.J Dep is the best ";
$mail->addAddress("astaquag@gmail.com");

if ($mail->send()) {
    echo "Email Sent..!";
} else {
    echo "Error..!";
}
$mail->smtpClose();
?>

可选排查手段

如果修复后仍发送失败,可以在$mail->send()前添加一行$mail->SMTPDebug = SMTP::DEBUG_SERVER;,即可输出详细的SMTP交互日志,快速定位发送环节的问题。

内容的提问来源于stack exchange,提问作者Anjana Dep

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:06:04