【问题标题】:Not receiving all fields in php mail未收到php邮件中的所有字段
【发布时间】:2014-01-09 11:12:52
【问题描述】:

这是邮件处理程序,在已发送电子邮件中收到的唯一部分是实际消息,缺少的部分是姓名和电话。

<?php
session_start();

    $email_to = "test@test.com";
    $name     = $_POST['name'];
    $phone    = $_POST['phone'];
    $email    = $_POST['email'];
    $subject   = $_POST['subject'];
    $message    = $_POST['message'];

    $headers  = "From: $email\r\n";
    $headers .= "Reply-To: $email\r\n";

    if(mail($email_to, $subject, $message, $headers)){
        echo "success";       
    } 
    else{
        echo "failed";     
    }  
?>

这是我反复检查的html部分,无法找出问题所在

<form id="contact" class="row" name="form1" method="post" action="">

                <div class="span2">
                <label>Name <span class="req">*</span></label>
                <input type="text" class="full" name="name" id="name"/>
                <div id="error_name" class="error">Please check your name</div>
                </div>

                <div class="span2">
                <label>Phone <span class="req">*</span></label>
                <input type="text" class="full" name="phone" id="phone"/>
                <div id="error_phone" class="error">Please check your phone</div>
                </div>

                <div class="span4">
                <label>Email <span class="req">*</span></label>
                <input type="text" class="full" name="email" id="email"/>
                <div id="error_email" class="error">Please check your email</div> 
                </div>

                <div class="span8">
                <label>Message <span class="req">*</span></label>
                <textarea cols="8" rows="10" name="message" id="message" class="full"></textarea>
                <div id="error_message" class="error">Please check your message</div>
                <div id="mail_success" class="success"> Thank you. Your message has been sent.</div>
<div id="mail_failed" class="error">Error, email not sent</div>

<p id="btnsubmit"><input type="submit" id="send" value="Send" class="btn btn-large"/></p>               
                </div>              
              </form>

js脚本-------

$(document).ready(function(){
  $("#send").click(function(){
      var name = $("#name").val();
      var phone = $("#phone").val();
    var email  = $("#email").val();
    var message  = $("#message").val();

    var error = false;

    if (name.length == 0) {
        var error = true;
        $("#error_name").fadeIn(500);
    }
    else {
        $("#error_name").fadeOut(500);
    }

    if (phone.length == 0) {
        var error = true;
        $("#error_phone").fadeIn(500);
    }
    else {
        $("#error_phone").fadeOut(500);
    }

     if(email.length == 0 || email.indexOf("@") == "-1" || email.indexOf(".") == "-1"){
       var error = true;
       $("#error_email").fadeIn(500);
     }
     else {
       $("#error_email").fadeOut(500);
     }

     if(message.length == 0){
        var error = true;
        $("#error_message").fadeIn(500);
     }else{
        $("#error_message").fadeOut(500);
     }

     if(error == false){
       $("#send").attr({"disabled" : "true", "value" : "Loading..." });

       $.ajax({
         type: "POST",
         url : "send.php",    
         data: "name=" + name + "&email=" + email + "&subject=" + "Website Enquiry" + "&message=" + message,
         success: function(data){    
          if(data == 'success'){
            $("#btnsubmit").remove();
            $("#mail_success").fadeIn(500);
          }else{
            $("#mail_failed").html(data).fadeIn(500);
            $("#send").removeAttr("disabled").attr("value", "send");
          }     
         }  
       });  
    }
  return false;                      
  });    
});

【问题讨论】:

  • 你没有对$name$phone 做任何事情——也许你应该将它们连接到$message
  • 不确定你的意思是什么?
  • 我在您的 HTML 标记中没有发现任何问题。这些值应该得到正确的POSTed。做print_r($_POST); - 你看到所有的字段和值正确吗?
  • 已添加 ---"&phone=" + phone +--- 现在一切正常,感谢你们@Fred-ii- Salivan
  • 对,保罗,很高兴听到它,不客气。很高兴我能(再次)提供帮助;-)

标签: php email scripting


【解决方案1】:

显然,您缺少部分!...您只是声明变量,但您没有将它们包含在邮件本身中。

在本例中,我将 $name 和 $phone 添加到 $message 正文。

<?php
session_start();

    $email_to = "test@test.com";
    $name     = $_POST['name'];
    $phone    = $_POST['phone'];
    $email    = $_POST['email'];
    $subject  = $_POST['subject'];
    $message  = $_POST['message'] . "\n";
    $message  .= "Name: " . $name . "\n";
    $message  .= "Phone: " . $phone;

    $headers  = "From: $email\r\n";
    $headers .= "Reply-To: $email\r\n";

    if(mail($email_to, $subject, $message, $headers)){
        echo "success";       
    } 
    else{
        echo "failed";     
    }  
?>

【讨论】:

  • 如果这行得通,我会踢自己的,现在只需测试一下,5 分钟内就能完成,谢谢
  • 我建议您在$message 中的变量中添加一些间距和/或换行符,否则可能会被全部捆绑在一起。即:Hello, this is my messageFred555-123-4567
  • $message = $_POST['message'] . "&lt;br/&gt;"; 中的&lt;br /&gt; 替换为\n --- $message = $_POST['message'] . "\n"; 我现在刚刚测试过。原因是您的标头不是以 HTML 格式发送的。 @保罗
  • @Paul 在 freds cmets 上 +1。他帮你分配! :)
  • 另外,我的测试由action="email_handler.php" 组成,而您有action="",我认为您在同一页面上运行所有内容,这并不总是好的做法。 @Paul action="" 表示“在同一页面上执行”。
猜你喜欢
  • 2011-06-04
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多