PHPMailer if判断被跳过 汽车经销商联系表单仅发送自动回复故障排查
问题修复步骤
- 先确认传入的
$brand和$location变量的实际值
全等判断对前后空格、大小写、特殊字符非常敏感,只要有一处不匹配就会跳过分支,你可以在if判断代码前添加调试代码输出变量详情:
// 上线后可改为写本地日志,避免影响前端输出 var_dump($brand, $location);
- 统一预处理参数再做判断
给两个变量统一做空格修剪、大小写对齐,避免前端传参不规范导致判断失效:
// 在if判断前执行 $brand = trim(ucfirst(strtolower($brand))); $location = trim(ucfirst(strtolower($location)));
- 增加兜底分支避免无收件人
在现有判断的末尾新增else分支,所有条件都不匹配时发送到默认管理员邮箱,同时记录异常参数方便后续排查:
else { // 替换为你的管理员默认邮箱 $mail->addAddress('admin@example.com'); // 记录未匹配的参数 file_put_contents('./mail_error.log', date('Y-m-d H:i:s').' 未匹配到对应收件人,参数:brand='.$brand.' location='.$location.PHP_EOL, FILE_APPEND); }
- 检查PHPMailer实例的复用逻辑
如果你是复用同一个PHPMailer实例先后发送自动回复和询盘邮件,发送询盘前必须调用clearAddresses()方法清空之前的收件人列表,避免出现收件人异常导致发送失败。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

