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

PHP联系表单提交后重复发送两次邮件,问题排查求助

问题根源

你遇到的重复发邮件问题核心原因有2个:

  1. contact.php中重复调用了mail()函数:代码里先无判断执行了一次mail($to, $subject , $body);,后续判断发送状态时又执行了一次!mail($to, $subject, $body),等于每次合法提交都会触发两次邮件发送。
  2. 潜在问题:表单提交后没有做跳转处理,用户提交后刷新页面会再次触发提交逻辑,也可能导致重复发信;另外当前字段校验逻辑用了||(或),只要任意一个字段符合要求就会继续执行,不符合常规校验逻辑。
  3. 额外排查点:你的表单action属性设置为index.php,需要确认index.php中是否仅有一次引入contact.php的逻辑,不存在重复引入、同时触发前端AJAX提交和后端原生提交的情况。

修复方案

1. 修正contact.php的邮件发送逻辑

仅调用一次mail()函数,用变量存储发送结果再做判断,同时优化校验逻辑和提交后跳转:

<?php
error_reporting(0);
if(isset($_POST['enviar']) && trim($_POST['email']) !==''){
    // 将原来的||替换为&&,要求所有必填项都符合要求才继续
    if(!empty(trim($_POST['name'])) && !empty(trim($_POST['subject'])) && !empty(trim($_POST['message'])) && filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL)) {
        $name = strip_tags(htmlspecialchars(trim($_POST['name'])));
        $email = strip_tags(htmlspecialchars(trim($_POST['email'])));
        $m_subject = strip_tags(htmlspecialchars(trim($_POST['subject'])));
        $message = strip_tags(htmlspecialchars(trim($_POST['message'])));

        $to = "pepito@gmail.com"; 
        $subject = "$m_subject:  $name";
        $body = "recibiste un nuevo email desde la pagina de Fácil Soft.\n\n"."detalles:\n\nNombre: $name\n\n\nEmail: $email\n\nAsunto: $m_subject\n\nMensaje: $message";

        // 仅调用一次mail函数,结果存入变量
        $send_status = mail($to, $subject , $body);
        if(!$send_status) {
            http_response_code(500);
        } else {
            // 发送成功后跳转,避免用户刷新页面重复提交,可替换为你自己的成功页地址
            header('Location: index.php?send=success');
        }
        exit();
    }
}
?>

2. 可选:避免用户重复点击提交按钮

给提交按钮增加点击后禁用的逻辑,防止用户多次点击触发多次提交:

<button class="btn" name="enviar" type="submit" id="sendMessageButton" onClick="this.disabled=true;this.form.submit();clearform();">Enviar mensaje</button>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:07