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

jQuery Ajax提交表单发邮件时内容变为附件而非正文该如何解决

你的邮件正文被当成附件发送的核心原因是PHP代码中Content-Type头的语法书写错误,导致邮件客户端无法正确识别正文格式,按下面的步骤修改即可解决:

1. 修复Content-Type头的语法错误

原代码里text/html和charset之间的分隔符错误使用了冒号,应该改为分号,同时遵循邮件MIME协议标准,头部换行符统一使用\r\n:

// 错误写法
$headers .= "Content-type: text/html: charset=UTF-8\n";
// 替换为正确写法
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

2. 修正所有邮件头部的换行符

邮件协议要求头部行之间的分隔符为\r\n,仅用\n会导致部分邮箱客户端解析异常,将所有头部的\n替换为\r\n:

$headers = "MIME-Version: 1.1\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
$headers .= "From: mexample@example.com\r\n";
$headers .= "Return-Path: example@example.com\r\n";
$headers .= "Reply-To: ".$email."\r\n";

3. 移除冗余代码

你在给$nome、$email、$telefone赋值时已经调用过strip_tags过滤特殊标签,拼接$body时不需要重复调用,直接使用变量即可:

$body = "<html>
            <head>
                <title> Formulario </title>
            </head>
            <body>".
            "<p> Nome: ".$nome."</p>".
            "<p> Email: ".$email."</p>".
            "<p> Telefone: ".$telefone."</p>".
            "</body>
        </html>";

4. (可选优化)修正jQuery传参格式

AJAX请求的data参数不需要额外包裹括号,直接传对象即可,避免低版本jQuery解析异常:

$("#enviar").click(function(){
    $.ajax({
        dataType:'html',
        url:"./scripts/email.php",
        type:"POST",
        data: {
            nome:$("input[name='name']").val(),
            email:$("input[name='email']").val(),
            telefone:$("input[name='phone']").val()
        },
        beforeSend: function(data){ 
        }, 
        success:function(data){
            alert("Dados Enviados");
        }, 
        complete: function(data){}
    });
});

修改完成后重新测试,表单内容就会正常显示在邮件正文中,不会再被识别为附件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:03