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

使用PHP PHPMailer(SMTP)提交联系表单无法发邮件求排查

排查PHP联系表单邮件发送失败的问题

看起来你的联系表单提交后一直返回「There is an error」,结合你给出的代码片段,我先从几个常见的问题点帮你分析——注意你贴出的clean_text函数代码不完整,这很可能是问题源头之一,先从这里开始:

1. 补全并验证clean_text函数

你目前的函数只写了$string = ...,没有完成逻辑也没有返回值,这会导致后续处理表单数据时变量异常。一个标准的文本清理函数应该包含必要的过滤并返回处理后的内容,比如:

function clean_text($string) {
    $string = trim($string); // 去除首尾空格
    $string = stripslashes($string); // 去除转义符
    $string = htmlspecialchars($string); // 转义HTML特殊字符
    return $string; // 必须返回处理后的字符串,否则变量会为空!
}

2. 检查mail()函数的调用逻辑

原生mail()函数对参数要求严格,很多失败都是因为参数不规范:

  • 确保表单提交判断正确:只有当表单POST提交时才处理逻辑,避免初始化阶段就触发错误:
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // 这里处理表单数据和邮件发送
    }
    
  • 完善邮件头信息:缺少From、Reply-To或者内容类型的邮件,很容易被服务器拒收:
    $headers = "From: " . $email . "\r\n";
    $headers .= "Reply-To: " . $email . "\r\n";
    $headers .= "Content-type: text/html; charset=UTF-8\r\n";
    
  • 确认收件人邮箱正确:你要接收邮件的邮箱地址必须是有效的,并且服务器允许发送到该地址(部分主机限制只能发送到同域名邮箱)。

3. 排查服务器邮件配置问题

很多共享主机默认禁用了原生mail()函数,或者需要配置SMTP才能正常发送。如果上述调整后还是失败,建议改用PHPMailer这类第三方库——它支持SMTP认证,发送成功率更高,配置也更灵活。

4. 检查表单字段与PHP变量的一致性

确保HTML表单里的字段name属性和PHP中$_POST获取的键名完全匹配,比如表单里是<input name="user_name">,PHP里就不能用$_POST["name"],否则会导致变量为空,进而触发发送失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:48