首页 > 解决方案 > 无法将表单信息发送到电子邮件 (PHP)

问题描述

我正在制作一个网页,该网页应该有一个表格,填写后应该将所有信息发送到电子邮件。但是,我似乎无法让它工作,这让我发疯。我是初学者,所以我想知道是否有人可以帮助我?

PHP 和我并不是最好的朋友……尽管如此,我并没有放弃。似乎我已经设法将 index.php 与 contact-form-php 连接起来,但是,每当我尝试它时,它都无法捕获输入到表单中的信息,而是向我发送“else”操作,这只是一个消息说有错误。我真的不知道如何解决它。

HTML

<form class="form-align mx-5 ml-md-0" action="contact-form.php" method="post">
     <input class="form-control my-3 inputname" type="text" 
     placeholder="Name" id="dname">
     <input class="form-control my-3 inputemail" type="email" 
     placeholder="Email" id="demail">
     <textarea class="form-control my-3 inputtext" type="text" 
     placeholder="We're all ears..." rows="5" id="dtext"></textarea>
     <a href="https://vivasox.com/"><button type="submit" 
     class="btnsend">SEND</button></a>
</form>

PHP

<?php
   /* Capturing variables */
   $demail=   ( empty($_POST["demail"])   )  ?  NULL : $_POST["demail"];
   $dname=    ( empty($_POST["dname"])    )  ?  NULL : $_POST["dname"];
   $dtext= ( empty($_POST["dtext"]) )  ?  NULL : $_POST["dtext"];

   /* Verifying POST */
   if ($demail && $dname && $dtext){
       $for = 'myemail@hotmail.com';
       $mailheader = "From: ".$demail."\r\n";
       $mailheader .= "Content-type: text/html; charset=utf-8\r\n";

       $MESSAGE_BODY = "Nombre: ".$dname."\n";
       $MESSAGE_BODY .= "\n<br>Email: ".$demail."\n";
       $MESSAGE_BODY .= "\n<br>Mensaje: ".nl2br($dtext)."\n";

       mail($for, $MESSAGE_BODY, $mailheader) or die("Sorry. There seems to be a problem. Please try sending your message again!");
       header("Location: https://socklesslooksolution.com/");

   }else{
        /* Error message */
        echo "Error: Please fill the form!";
  }
?>

我希望它发送电子邮件,然后返回站点的主页,但它不执行这些操作。

非常感谢您的参与!

标签: phphtmlformsemail

解决方案


您的输入和 textarea 缺少该name属性,您需要在提交表单时发送值:

<form class="form-align mx-5 ml-md-0" action="contact-form.php" method="post">
     <input class="form-control my-3 inputname" type="text" name="dname" placeholder="Name" id="dname">
     <input class="form-control my-3 inputemail" type="email" name="demail" placeholder="Email" id="demail">
     <textarea class="form-control my-3 inputtext" type="text" name="dtext" placeholder="We're all ears..." rows="5" id="dtext"></textarea>
     <a href="https://vivasox.com/"><button type="submit" class="btnsend">SEND</button></a>
</form>

推荐阅读