我不知道这是否是一个常见的问题,但我似乎无法理解为什么会这样。 我正在尝试处理表单并让它将详细信息发送到电子邮件。很简单。 这是它的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>";
}
?>
答案 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