【问题标题】:sending form info to email将表格信息发送到电子邮件
【发布时间】:2015-03-15 13:58:08
【问题描述】:

我有一个向 php doc 发送信息的表单。测试时,我提交并显示数组,但不会转到电子邮件地址。

<?php require_once("/includes/fbcheader.php"); 
?>
<div class="comments">
     <h3> We Welcome All Comments </h3>
   <form action="/php/contact-send.php" method="post" 
                                            id="contact-form" class="form">
     <p class="input-block"> 
          <label for="form-name" >Name</label>
          <input type="text" value name="name" id="form-name" 
               autofocus placeholder="Please enter name" required>
          </p>
        <p class="input-block">
            <label for="form-email" >Email</label>
            <input type="email" value name="email" id="form-email" 
                 required placeholder="Please enter E-Address">
            <input type="hidden" value name="age" id="age">
        </p>
        <p class="input-block">
            <label for="form-subject" >Subject</label>
            <input type="text" value name="subject" id="form-subject"
                 required placeholder="Please enter subject">
        </p>
        <p class="textarea-block">
            <label for="form-message">Comment</label>
            <textarea name="message" id="form-message" 
                 cols="70" rows="10"></textarea>
        </p>
   <div class="clear"></div>
                <input type="hidden" name="firstname" id="firstname">
                <input type="submit" value="Send" id="form-submit">
                <p class="hide" id="response"></p>
            <div class="hide">
                <label for="spam-check">Do not fill out this field</label>
                <input name="spam-check" type="text" value id="spam-check">
            </div>
    </form>
</div>
</body>
</html>

这是发送的php执行代码

<html>
<head>
 <title>Contact-Send</title>
</head>
 <body>
   <?php
      if(null!==($_POST["name"])) {
          $name = $_POST["name"];
         /* echo "Please enter 'Name'<br />"; */
      } else {
          $name = "";
      }
      if(null!==($email = $_POST["email"])) {
          $email = $_POST["email"];
          /* echo "Please enter 'E_Mail'<br />"; */
      } else {
          $email = "";
      }
      if(null!==($email = $_POST["subject"])) {
          $form_email = $_POST["subject"];
          /* echo "Please enter 'Subject'<br />"; */
      } else {
          $subject = "";
      }
    if(null!==($message = $_POST["message"])) {
        $message = $_POST["message"];
        /* echo "Please enter your message<br />"; */
    }   else {
        $message = "";
    }
    /*echo "{$name}, {$email}, {$message}";*/

  $email_from = '$Email';

  $email_subject = "New Form submission";

  $email_body = "You have received a new message from the user $name.\n".
                        "Here is the message:\n $message".

  $to = "me@myaddress.com";
   ?>
   <br>
     <?php
      $headers = "From: $email_from \r\n";

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

    mail($to,$email_subject,$email_body,$headers);

    header("thank-you.html");
   ?>

   </body>
  </html>

提交时,我只需获取显示输入字段内容的数组

【问题讨论】:

  • 你是什么意思“我只是得到显示输入字段内容的数组”?
  • 检查mail()函数的返回值,你的From头会导致消息失败,你需要在那里使用双引号。实际上根本没有......
  • value name 这会导致一些意想不到的结果。
  • @JohnConde - 当我按下提交时,下一页显示输入名称及其内容。例如。数组 ([name] => Jonathan; [email] => JonDoe@abcsite.com; [age] => ;[subject] => test; ...
  • 那么你有 &lt;input type="hidden" name="firstname" id="firstname"&gt; 没有价值也没有参考,所以我不知道你为什么要使用它,对于 &lt;input type="hidden" value name="age" id="age"&gt; 加上,我已经说过关于 @987654328 @.

标签: php forms email submit


【解决方案1】:

快速查看您的 PHP 代码,我看到以下内容:

这:if(null!==($email = $_POST["email"])) 将失败,因为您正在对任何内容进行检查。应该是:if(null!==($_POST["email"]))

这里有一个未定义的变量:$email_from = '$Email'; 这将简单地输出“$Email”。它应该是$email_from = $email;(根据您的代码)。但是,您只是在此处重新分配您根本不需要做的变量。

您的concatenating$email_body$to 地址。

您的header("thank-you.html"); 将失败,因为根据您的代码,输出已经从这里开始&lt;?php(第 6 行)。

您应该为 contact-send.php:

争取更接近此的目标
<?php
      if(null!==($_POST["name"])) {
          $name = $_POST["name"];
         /* echo "Please enter 'Name'<br />"; */
      } else {
          $name = "";
      }
      if(null!==($_POST["email"])) {
          $email = $_POST["email"];
          /* echo "Please enter 'E_Mail'<br />"; */
      } else {
          $email = "";
      }
      if(null!==($_POST["subject"])) {
          $form_email = $_POST["subject"];
          /* echo "Please enter 'Subject'<br />"; */
      } else {
          $subject = "";
      }
    if(null!==($_POST["message"])) {
        $message = $_POST["message"];
        /* echo "Please enter your message<br />"; */
    }   else {
        $message = "";
    }
    /*echo "{$name}, {$email}, {$message}";*/

  $email_subject = "New Form submission";

  $email_body = "You have received a new message from the user $name.\n".
                "Here is the message:\n $message";

  $to = "me@myaddress.com";
    $headers = "From: $email \r\n";
    $headers .= "Reply-To: $email \r\n";
    mail($to,$email_subject,$email_body,$headers);
    header("Location: thank-you.html");
   ?>

记得将$to 设置为您的电子邮件地址!

【讨论】:

  • 感谢@M.Doye 的时间和考虑。在清理了一些明显的错误并听取了您上面的建议之后,我已经让代码工作了。还有一些关于输出格式的问题:即设置字体标签()。我知道我将不得不退出 php,但只是想知道语法可能是什么。再次感谢。
  • @JZeig1 没问题,很乐意提供帮助。你可以找到一个很好的例子来说明如何做到这一点right here。这是一个很好的例子,它真的很简单,你不必改变你的大部分代码:-)
猜你喜欢
  • 2017-10-28
  • 1970-01-01
  • 2016-07-02
  • 2016-01-08
  • 2020-08-11
  • 2014-10-24
  • 1970-01-01
  • 2016-01-25
相关资源
最近更新 更多