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

SendGrid配置报错:Mail.php第37行语法错误(意外'[',期待')')

解决SendGrid API代码中的Parse Error语法错误

这个语法错误其实挺常见的,根源出在PHP版本兼容性上,咱们一步步拆解解决:

错误原因分析

你看到的Parse error: syntax error, unexpected '[', expecting ')'错误,主要有两个触发点:

  • 代码里用了[]短数组语法,这个特性是PHP 5.4才引入的,如果你的服务器运行的是PHP 5.3或更低版本,PHP解析器就不认识这个写法,会直接报错。
  • 另外,array_filter(...) ?: null这种把函数调用直接和三元运算符结合的写法,在部分旧PHP版本里也会出现解析歧义,导致报错。

修复方案

方案一:升级PHP版本(推荐)

PHP 5.3及更早的版本早就停止安全维护了,不仅有兼容性问题,还存在安全漏洞。直接把PHP版本升级到5.4及以上(建议7.0+,SendGrid的PHP库对高版本PHP支持更好),不用改代码就能解决问题。

方案二:修改Mail.php代码兼容低版本

如果暂时没法升级PHP,可以把E:\xampp\htdocs\sendgrid-php\lib\helpers\mail\Mail.php第37行的代码改成兼容低版本的写法:

原代码:

public function jsonSerialize() { 
    return array_filter( 
        [ 'email' => $this->getEmail() ], 
        function ($value) { return $value !== null; } 
    ) ?: null; 
}

修改后的代码:

public function jsonSerialize() { 
    $filteredData = array_filter( 
        array( 'email' => $this->getEmail() ), 
        function ($value) { return $value !== null; } 
    );
    return !empty($filteredData) ? $filteredData : null; 
}

修改点说明:

  • 把短数组[]换成PHP 5.3支持的array()写法
  • 把直接在return语句里的复合运算拆成两步:先把过滤后的结果赋值给变量,再通过!empty()判断后返回,避免解析歧义

验证修复

修改完成后,重新运行你的SendGrid自动发邮件代码,这个语法错误应该就消失了。

内容的提问来源于stack exchange,提问作者Bhagyalakshmi k raju

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:34:38