【问题标题】:PHP Mail form showing blank responses显示空白响应的 PHP 邮件表单
【发布时间】:2014-11-20 03:48:57
【问题描述】:

我有一个来自模板的 PHP 邮件表单,它向我发送电子邮件,但似乎所有变量都是空白的。

<?php
	header('Content-type: application/json');
	$status = array(
		'type'=>'success',
		'message'=>'Email sent!'
	);

    $name = @trim(stripslashes($_POST['yourname'])); 
    $email = @trim(stripslashes($_POST['youremail'])); 
    $subject = @trim(stripslashes($_POST['yoursubject'])); 
    $message = @trim(stripslashes($_POST['yourmessage'])); 

    $email_from = $email;
    $email_to = 'kylef33@gmail.com';

    $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

    $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>');

    echo json_encode($status);
    die; 
?>
在这里,HTML:
<div class="col-sm-6">
    <h1>
        Contact Form
    </h1>
    <p>
        Fill out the form to enquire directly and we will get back to you as soon as possible.
    </p>
    <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" role="form">
        <div class="row">
            <div class="col-sm-6">
                <div class="form-group">
                    <input name="yourname" type="text" class="form-control" required="required" placeholder="Name"> 
                </div>
            </div>
            <div class="col-sm-6">
                <div class="form-group">
                    <input name="youremail" type="text" class="form-control" required="required" placeholder="Email address"> 
                </div>
            </div>
        </div>
        <div class="row">
            <div class="col-sm-12">
                <div class="form-group">
                    <textarea name="yourmessage" id="message" required class="form-control" rows="8" placeholder="Message"></textarea> 
                </div>
                <div class="form-group">
                    <button type="submit" class="btn btn-danger btn-lg">Send Message</button> 
                    <input type="hidden" name="yoursubject" value="Enquiry"> 
                </div>
            </div>
        </div>
    </form>
</div>

但生成的电子邮件是:

姓名:

电子邮件:

主题:

消息:

没有任何回应。我哪里错了?

编辑:

如果我在 php 文件中手动设置变量,则消息通过正常:

    $name = 'John'; 
    $email = 'email@email.com; 
    $subject = 'Enquiry Form'; 
    $message = 'Message here.';
我认为 php 文件没有正确地从表单中获取变量。我该如何解决?

【问题讨论】:

  • 回显 $body 并检查您是否正确获取值。
  • 你为什么使用@trim@mail?您不需要在此类脚本中隐藏错误,而且您会丢失宝贵的故障排除信息。
  • 你试过把&lt;button type="submit" class="btn btn-danger btn-lg"&gt;Send Message&lt;/button&gt;改成&lt;input type="submit"/&gt;吗?

标签: php html forms email


【解决方案1】:

尝试使用简单的代码并在标题中设置 Content-type: text/html 可能有用:

$name = $_POST['yourname']; 
$email = $_POST['youremail']; 
$subject = $_POST['yoursubject']; 
$message = $_POST['yourmessage']; 

$email_from = $email;
$email_to = 'kylef33@gmail.com';

$body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message;

//set the headers 

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'From: <'.$email_from.'>' . "\r\n";

// Mail it
mail($email_to, $subject, $body, $headers);

【讨论】:

  • 仍然给我一封空白的电子邮件。我想不通。会不会是我服务器上的php有问题?
【解决方案2】:

我没有看到电子邮件的标题。尝试添加这个:

$headers = "MIME-Version: 1.0\r\nFrom: $noReplay\r\nReply-To: $noReplay\r\nContent-Type: text/html; charset=utf-8";

其中$noReplay 是要显示给接收者的电子邮件地址,并且标头作为mail() 函数中的最后一个参数发送。

希望这会有所帮助!
继续编码,
战神。

【讨论】:

  • 感谢您的帮助,但没有帮助。我仍然收到空白回复。