PHP电子邮件无法正常工作 - 未收到电子邮件

时间:2017-01-01 05:20:10

标签: php html email

问题

在网站上,当我按提交电子邮件时,它现在正确地完成所有事情,但我没有收到电子邮件,有人请帮忙吗?

PHP

<?php

$first_name = $_POST ['first_name'];
$last_name = $_POST ['last_name'];
$email = $_POST['email'];
$message = $_POST['message'];
$headers = "From:" . $first_name . $last_name;

$to = "Relentile@gmail.com";
$subject = "New Message";

print_r($_POST);

mail ($to, $subject, $message, $headers);
echo "Your Message has been sent";

?>

HTML

<form action="contact.php" name="contact_form" method="post">
   <p>
   First name:
   <input name="first_name" type="text"/>
   </p>

   <p>
   Last name:
   <input name="last_name" type="text"/>
   </p>

   <p>
   <br>
   E-Mail:
   <input name="email" type="text"/>
   </p>  
   <br>

   <p>Type your enquiry</p>
   <p><textarea name"message"></textarea></p>

   <p>
   <input type="submit" name="submit" value="Submit">
   <input type="reset" name="reset" value="Reset">
   </p>

   </form>

旧错误消息+正在发送的数据(第二张图片)

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

从方法post设置如下。

 <form action="contact.php" name="contact_form" method="post">

在地址栏中,您的数据默认发送get方法。但是您在php文件中使用$_POST[]。所以您没有获得值。

同样在contact.php中使用$headers,如下所示:

$headers = "From:" . $first_name . $last_name;

并且

mail ($to, $subject, $message,$headers);

也是$subject变量末尾的分号。

$subject = "New Message";

并做以下......

$first_name = test_input($_POST ['first_name']);
$last_name = test_input($_POST ['last_name']);
$email = test_input($_POST['email']);
$message = test_input($_POST['message']);


    function test_input($data) {
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data);
      return $data;
    }

其中

1.从用户输入数据中删除不必要的字符(额外的空格,制表符,换行符)(使用PHP trim()函数)

2.从用户输入数据中删除反斜杠()(使用PHP stripslashes()函数)

答案 1 :(得分:0)

更改您的PHP

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$message = $_POST['message'];
$headers = "From: " . $email;

$to = "relentile@gmail.com";
$subject = "New Message";

print_r($_POST);

mail($to, $subject, $message, $headers);
echo "Your Message has been sent";

现在应该可行了。 标题必须采用适当的格式(间距)。 &#34;从&#34;标题包含发件人的电子邮件地址。 在PHP中访问数组时,不要使用空格:wrong = $ array [&#34; blah&#34;],good = $ array [&#34; blah&#34;]。这同样适用于功能。