我在为联系人表单更正php脚本时遇到问题。我设法让它发电子邮件给我,但它没有显示姓名,电子邮件或文本在电子邮件。
PHP脚本
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$to = 'myemail@email.comm';
$subject = 'Hello';
mail ($to, $subject, $message, "From: " . $name);
echo "Your Message has been sent.";
?>
接触形式
<form role="form" action="contact.php">
<div class="form-group">
<label for="InputName">Name</label>
<input name="name" type="text" class="form-control" id="InputName" placeholder="Enter Name">
</div>
<div class="form-group">
<label for="InputEmail">Email Address</label>
<input name="email" type="email" class="form-control" id="inputEmail" placeholder="Enter email">
</div>
<div class="form-group">
<label for="InputText">Message</label>
<input name="message" type="text" class="form-control" id="InputText" placeholder="Enter Text">
</div>
<button name="submit" type="submit" class="btn btn-default">Send</button>
</form>
最佳答案
您正在使用post变量,但是您的表单如下:
<form role="form" action="contact.php">
没有定义post方法。未定义方法时默认获取的窗体。
因此,您需要将表单更改为
<form role="form" action="contact.php" method="post">
从你留下的评论中:
“我仍然有一个问题,不是给我他们输入的电子邮件,而是给一个由托管公司创建的电子邮件,这是不好的。”
答:这很可能是因为你在代码中如何使用
From:
,这就是此人的名字。邮件需要电子邮件地址。替换:
mail ($to, $subject, $message, "From: " . $name);
用:
mail ($to, $subject, $message, $header);
并在
$subject = 'Hello';
下添加以下内容$header = "From: ". $name . " <" . $email . ">\r\n";
这样,您将在电子邮件中看到此人的姓名,同时有一个有效的“发件人”标题。
有关邮件头的详细信息,请访问http://php.net/manual/en/function.mail.php。
附加说明:
我还建议您使用以下方法测试是否有任何字段不为空:
if(!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['message']))
{
// execute code
}
否则,任何人都可以发送一封没有任何信息的电子邮件。
你也可以添加一个
else{}
,就像else { echo "Please fill in all the fields."; }
这是一个非常基本的方法。