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

WordPress表单PHP处理异常:邮件发送与客户端响应问题排查

WordPress联系表单邮件发送及客户端响应问题解决

问题概述

WordPress站点的联系表单存在两个核心问题:

  • 无法通过PHP发送邮件
  • 客户端无法收到响应
    移除代码开头的判断条件后问题仍存在,且未获取到相关服务器日志。

原实现代码

add_action('wp_ajax_nopriv_mail_before_submit', 'mail_before_submit');
add_action('wp_ajax_mail_before_submit', 'mail_before_submit');
function mail_before_submit() {
    $jsonRequest = json_decode(file_get_contents('php://input'), true);
    if (strcmp($jsonRequest['action'], 'contact_form') !== 0) {
        echo 'failure';
        exit(1);
    };

    $sendMail = wp_mail(
        get_option('admin_email'),
        sprintf('Kontaktformular von %1$s', $jsonRequest['name']),
        sprintf(
            'Name: %1$s
Email: %2$s
Telefonnummer: %3$s
Nachricht: %4$s
JSON: %5$s',
            $jsonRequest['name'],
            $jsonRequest['email'],
            $jsonRequest['phone'],
            $jsonRequest['message'],
            json_encode($jsonRequest),
        ),
        sprintf('From: %1$s <"%2$s">', $jsonRequest['name'], $jsonRequest['email']),
    );

    if ($sendMail) {
        echo 'success';
        exit();
    }

    echo 'failure';

    exit();
}

排查与修复过程

1. 邮件发送失败修复

使用DDEV搭配VS Code分步调试后,定位到wp_mail函数的headers参数格式不符合邮件协议规范。将原headers代码:

sprintf('From: %1$s <"%2$s">', $jsonRequest['name'], $jsonRequest['email'])

替换为:

sprintf('From: %1$s', $jsonRequest['email'])

修改后邮件可正常发送至目标邮箱。

2. 客户端无响应修复

邮件功能恢复后,客户端仍无法收到响应。查看浏览器网络面板发现响应内容为空,原因是前端JavaScript未调用await response.text()(或其他处理响应内容的方法)。添加该处理逻辑后,客户端可正常获取success或failure响应,表单功能完全正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:52:29