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

使用PHP mail()函数发送邮件及落地页调用问题排查请求

PHP mail() 邮件发送及跳转问题排查与修复

代码里的核心问题及修复点:

  • 多余符号导致语法错误:代码每行开头的>是无效符号,会直接导致PHP解析失败,脚本完全无法运行,必须全部删除。
  • 邮件头格式错误:$headers= "From : ".$mailFrom;中From和冒号之间的空格不符合邮件头规范,正确格式应为From:(无空格),否则会被邮件服务器判定为无效头信息,拒收邮件。
  • 邮件内容换行不规范:邮件内容里的普通换行要替换为\r\n(RFC标准换行符),否则内容显示混乱,还可能触发反垃圾邮件机制。
  • 跳转后未终止脚本:header("Location: xxx.html")执行后必须加exit();或die();,否则PHP可能继续执行后续代码,导致跳转失效。
  • 输入未过滤存在风险:直接使用用户提交的$_POST数据可能引发邮件头注入攻击,需要对输入做基础过滤。

修正后的完整代码:

<?php
if (isset($_POST['submit'])) {
    // 过滤并验证用户输入
    $name = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
    $mailFrom = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
    $message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);
    $mobile = filter_var($_POST['mobile'], FILTER_SANITIZE_STRING);

    // 验证邮箱格式有效性
    if (!$mailFrom) {
        header("Location: error.html");
        exit();
    }

    $mailTo = "xxxxx@yourdomain.com"; // 替换为实际收件邮箱
    // 规范邮件头,添加必要的额外信息
    $headers = "From: ".$mailFrom."\r\n";
    $headers .= "Reply-To: ".$mailFrom."\r\n";
    $headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

    // 用标准换行符格式化邮件内容
    $txt = "You have received an email from ".$name.".\r\n\r\n";
    $txt .= $message.".\r\n\r\n";
    $txt .= "Mobile : ".$mobile;

    $subject = "Information Request";

    // 执行发送并判断结果
    if(mail($mailTo, $subject, $txt, $headers)){
        header("Location: xxx.html");
        exit();
    } else {
        // 发送失败的处理逻辑
        header("Location: send-fail.html");
        exit();
    }
}
?>

额外排查建议:

如果修正后仍有问题,可检查:

  • 收件邮箱是否开启反垃圾规则,尝试将发件地址加入白名单
  • xxx.html的路径是否正确,确保和PHP脚本在同一目录,或使用绝对路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:15:37