尝试创建联系我们表单


Trying to create a contact us form

此代码的目标是让某人填写它,然后将他们键入的消息发送到我的电子邮件。我在网上寻找了一些参考资料,并且对 php 如此陌生,我很难理解为什么当我单击发送按钮时它会显示我的 php 页面代码。我的问题是为什么在按下联系表格上的发送按钮时没有收到电子邮件?

<form action="mail.php" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">
<p>Priority</p>
<select name="priority" size="1">
<option value="Low">Low</option>
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br />
<p>Type</p>
<select name="type" size="1">
<option value="update">Question</option>
<option value="change">Information Change</option>
<option value="addition">Information Addition</option>
<option value="new">Misc.</option>
</select>
<br />
<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" value="Send"><input type="reset" value="Clear">
</form>
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $name 'n Priority: $priority 'n Type: $type 'n Message: $message";
$recipient = "dnasim09@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $email 'r'n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='form.html' style='text-     decoration:none;color:#ff0099;'> Return Home</a>";
?>

感谢所有帮助。谢谢!

  • 代码不会检查错误。
  • 你在同一页面中有php,但没有提到名字是什么表单文件(表示您的操作可疑。

设置action="",以便将表单发送到页面本身。仅在发布表单时执行 Php 代码,为此我向您添加了一个name提交按钮,并在 Php 中检查数组中是否存在提交%_POST告诉 Php 何时执行此代码。由于您将在同一页面上,因此我更改了锚标签的文本。

注意:此代码假定在配置了电子邮件服务器的服务器上执行,并且在执行过程中没有发生错误

<form action="" method="POST">
<p>Name</p> <input type="text" name="name">
<p>Email</p> <input type="text" name="email">
<p>Priority</p>
<select name="priority" size="1">
<option value="Low">Low</option>
<option value="Normal">Normal</option>
<option value="High">High</option>
</select>
<br />
<p>Type</p>
<select name="type" size="1">
<option value="update">Question</option>
<option value="change">Information Change</option>
<option value="addition">Information Addition</option>
<option value="new">Misc.</option>
</select>
<br />
<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br />
<input type="submit" name="sendemail" value="Send"><input type="reset" value="Clear">
</form>
<?php
if(isset($_POST["sendemail"]))
{
$name = $_POST['name'];
$email = $_POST['email'];
$priority = $_POST['priority'];
$type = $_POST['type'];
$message = $_POST['message'];
$formcontent=" From: $name 'n Priority: $priority 'n Type: $type 'n Message: $message";
$recipient = "dnasim09@gmail.com";
$subject = "Contact Form";
$mailheader = "From: $email 'r'n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!" . " -" . "<a href='form.html' style='text-     decoration:none;color:#ff0099;'> Go Somewhere you are already home ;)</a>";
}
?>

您还有一个非常常见的错误,很多人在"联系我们"表格中都有

$email = $_POST['email'];
$mailheader = "From: $email 'r'n";

这将破坏 SPF 并导致 DMARC 失败,如果您使用的邮件服务器启用了 DMARC 并且 GMAIL 启用了 DMARC,您将永远不会收到来自某些人的邮件。

由于DMARC是较新的协议,因此许多用于联系我们表格的旧千篇一律的代码 - 没有考虑到这一点。

您可以在此处阅读更多相关信息: "DMARC - 联系我们形成噩梦"

建议的解决方法是执行以下操作:

$email = "dnasim09@gmail.com";
$subject = "Contact Form Email: " . $_POST['email'];

这样 - 您可以避免文章中的问题大纲。您将无法快速点击"回复"按钮,但至少您会收到来自启用了DMARC的客户的电子邮件。

相关文章: