联系表格不发送发件人电子邮件

时间:2015-05-03 19:59:39

标签: php email contact-form

我不知道这是否是一个常见的问题,但我似乎无法理解为什么会这样。 我正在尝试处理表单并让它将详细信息发送到电子邮件。很简单。 这是它的PHP代码。当某人填写表格时,它会显示除发件人电子邮件之外的所有内容。它作为未知发件人出现。有谁知道我怎么解决它? 非常感谢那些花时间看这个的人。

<?php

if($_POST["submit"]) {
$recipient="emailx@gmail.com";
$subject="Form to email message";
$Name=$_POST["Name"];
$Phone=$_POST["Phone"]; 
$senderEmail=$_POST["senderEmail"];
$comments=$_POST["comments"];

$mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments";

mail($recipient, $subject, $mailBody, "From: $Name <$comments>");

$thankYou="<p>Thank you! Your message has been sent.</p>";
}

?>

2 个答案:

答案 0 :(得分:0)

似乎未正确设置标头。 尝试这样的事情:

<?php

if($_POST["submit"]) {
  $recipient="emailx@gmail.com";
  $subject="Form to email message";
  $Name=$_POST["Name"];
  $Phone=$_POST["Phone"]; 
  $senderEmail=$_POST["senderEmail"];
  $comments=$_POST["comments"];
  $header = "From: $senderEmail" . "\r\n" .
     "Reply-To: $senderEmail" . "\r\n" .
     'X-Mailer: PHP/' . phpversion();

  $mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments";

  mail($recipient, $subject, $mailBody, $header);

  $thankYou="<p>Thank you! Your message has been sent.</p>";
}

?>

可以找到php mail函数的函数参考here

答案 1 :(得分:0)

chris85在评论中回答了这个问题:

  

From $comments不应该是$senderEmail

但是,它并不那么简单。您不能只选择任何from电子邮件地址并希望它能够正常运行。如果您尝试欺骗地址,电子邮件客户端很可能会垃圾邮件。

每当您更改From标头时,您还需要更改reply-to标头,在您的情况下,您应该将From标头作为服务器上的电子邮件地址之一并且只将reply-to标题更改为用户输入的内容。这样你的邮件就不会被垃圾邮件发送,因为它看起来并不像你想偷偷摸摸一样。

另一个选择是使用一个简单的库来为您处理所有这些。

这是我写的一个非常简单的问题:http://geneticcoder.blogspot.com/2014/08/wrapper-for-phps-mail-function.html