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

使用PHPMailer对接Gmail SMTP发信出现FatalError错误如何解决

错误原因

该报错是PHPMailer版本与当前PHP版本不兼容导致的:FILTER_FLAG_HOST_REQUIRED是PHP过滤器扩展的内置常量,PHP 8.0及以上版本已经正式移除该常量,而你当前使用的PHPMailer是适配PHP 7.x的旧版本,代码中仍在调用这个已废弃的常量,因此触发致命错误。

解决方案

方案1(推荐):升级PHPMailer到最新稳定版

最新版本的PHPMailer已经完成PHP 8+的适配,移除了对废弃常量的调用。直接替换本地phpmailer目录下的PHPMailer.php、SMTP.php、Exception.php三个核心文件为最新版本对应文件即可解决问题。

方案2(临时兼容):手动定义缺失常量

如果暂时无法升级PHPMailer,可以在PHPMailer.php文件的开头添加如下代码,手动定义该常量:

if (!defined('FILTER_FLAG_HOST_REQUIRED')) {
    define('FILTER_FLAG_HOST_REQUIRED', 2);
}

该常量的原生默认值就是2,手动定义后可以同时兼容新旧PHP版本,临时解决报错。

其他潜在问题修复

解决上述报错后,你还需要调整代码中的两处问题,避免后续出现其他发信故障:

  • Gmail SMTP不支持直接使用账号密码登录,需要先开启Google账号的两步验证,生成应用专用密码,将生成的16位专用密码填入$mail->Password配置项。
  • 你实例化PHPMailer时传入TRUE开启了异常抛出,但未对send()方法做异常捕获,建议调整发信逻辑为:
try {
    $mail->send();
    $success_msg = "邮件发送成功。";
} catch (Exception $e) {
    $error_msg = "邮件发送失败:" . $mail->ErrorInfo;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:36:03