2014-09-25 82 views
2

我从一个模板发送邮件给我的PHP邮件表单,但它显示所有变量都是空白的。 PHP邮件表单显示空白回复

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

 
    $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 = '[email protected]'; 
 

 
    $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 protected]; 
 
    $subject = 'Enquiry Form'; 
 
    $message = 'Message here.';
我认为PHP文件不是从形式正确地获取变量。我该如何解决?

+1

回声'$ body'并检查您是否正确获取值。 – Jenz 2014-09-25 11:28:38

+0

你为什么使用'@ trim'和'@ mail'?您不应该需要在这种脚本中排除错误,并且会失去重要的故障排除信息。 – 2014-09-26 10:41:25

+0

您是否尝试更改''到''? – tftd 2014-09-26 10:42:32

回答

0

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

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

其中$noReplay是电子邮件地址展现给接收器和头部是被作为mail()功能的最后一个参数。

希望这会有所帮助!
继续编码,
阿瑞斯。

+0

感谢您的帮助,但它没有帮助。我仍然得到空白的回应。 – 2014-09-26 09:48:42

0

尝试通过使用简单的代码,并设置内容类型:它可能有用头的text/html:

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

$email_from = $email; 
$email_to = '[email protected]'; 

$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); 
+0

仍然给我一个空白的电子邮件。我无法弄清楚。这可能是我的服务器上的PHP问题? – 2014-09-27 20:53:27