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

PHP邮件发送问题求助:仅收到标签标题无用户填写内容

解决PHP邮件仅显示标签无用户内容的问题

我帮你排查了代码里的问题,主要有几个关键点导致邮件只显示标签(比如Name:)却没有用户填写的内容:

1. 错误抑制符@隐藏了变量获取失败的问题

你的PHP代码里用了@来抑制错误(比如@trim(stripslashes($_POST['name']))),这会导致当$_POST里没有对应字段时,系统不会抛出错误提示,直接返回空值,最终邮件里就只有标签没有内容。

2. 表单部分输入框缺少name属性(虽不是当前核心问题,但会影响后续扩展)

你的HTML表单里,Phone和Company Name这两个输入框没有设置name属性,就算用户填写了内容,PHP也无法通过$_POST获取到它们的值。


修复后的完整代码:

修正后的HTML代码

<section id="contact-page"> 
    <div class="container"> 
        <div class="center"> 
            <h2>Drop Your Message</h2> 
        </div> 
        <div class="row contact-wrap"> 
            <div class="status alert alert-success" style="display: none"></div> 
            <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php"> 
                <div class="col-sm-5 col-sm-offset-1"> 
                    <div class="form-group"> 
                        <label>Name *</label> 
                        <input type="text" name="name" class="form-control" required="required"> 
                    </div> 
                    <div class="form-group"> 
                        <label>Email *</label> 
                        <input type="email" name="email" class="form-control" required="required"> 
                    </div> 
                    <div class="form-group"> 
                        <label>Phone</label> 
                        <!-- 新增name属性 -->
                        <input type="number" name="phone" class="form-control"> 
                    </div> 
                    <div class="form-group"> 
                        <label>Company Name</label> 
                        <!-- 新增name属性 -->
                        <input type="text" name="company" class="form-control"> 
                    </div> 
                </div> 
                <div class="col-sm-5"> 
                    <div class="form-group"> 
                        <label>Subject *</label> 
                        <input type="text" name="subject" class="form-control" required="required"> 
                    </div> 
                    <div class="form-group"> 
                        <label>Message *</label> 
                        <textarea name="message" id="message" required="required" class="form-control" rows="8"></textarea> 
                    </div> 
                    <div class="form-group"> 
                        <!-- 修正class拼写错误:btnbtn-primary → btn btn-primary -->
                        <button type="submit" name="submit" class="btn btn-primary btn-lg" required="required">Submit Message</button> 
                    </div> 
                </div> 
            </form> 
        </div> 
    </div> 
</section>

修正后的PHP代码

<?php
header('Content-type: application/json');

// 移除错误抑制符,添加字段存在性检查
$name = isset($_POST['name']) ? trim(stripslashes($_POST['name'])) : '';
$email = isset($_POST['email']) ? trim(stripslashes($_POST['email'])) : '';
$subject = isset($_POST['subject']) ? trim(stripslashes($_POST['subject'])) : '';
$message = isset($_POST['message']) ? trim(stripslashes($_POST['message'])) : '';
// 新增获取Phone和Company Name的值
$phone = isset($_POST['phone']) ? trim(stripslashes($_POST['phone'])) : '';
$company = isset($_POST['company']) ? trim(stripslashes($_POST['company'])) : '';

$email_from = $email;
$email_to = 'myemail@email.com';

// 把新增的字段也加入邮件内容里(可选,根据你的需求调整)
$body = 'Name: ' . $name . "\n\n" .
        'Email: ' . $email . "\n\n" .
        'Phone: ' . $phone . "\n\n" .
        'Company Name: ' . $company . "\n\n" .
        'Subject: ' . $subject . "\n\n" .
        'Message: ' . $message;

// 移除@,这样如果邮件发送失败能看到错误信息
$success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

// 根据发送状态返回对应信息
if ($success) {
    $status = array(
        'type'=>'success',
        'message'=>'Thank you for contact us. As early as possible we will contact you '
    );
} else {
    $status = array(
        'type'=>'error',
        'message'=>'Sorry, there was an error sending your message. Please try again later.'
    );
}

echo json_encode($status);
die;
?>

关键修复说明:

  • 去掉了PHP里的@错误抑制符,改用isset()检查字段是否存在,这样能避免因字段未正确传递导致的空值问题,同时方便排查错误。
  • 给HTML里的Phone和Company Name输入框添加了name属性,确保这些字段的值能被PHP获取到。
  • 修正了提交按钮的class拼写错误(btnbtn-primary改成btn btn-primary),确保按钮样式正常显示。
  • 新增了邮件发送状态的判断,失败时返回错误提示,方便用户知道问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:51:54