网站联系表单提交空白电子邮件

4
我在我的网站联系表单遇到了问题!我已经尝试在网上寻找答案,但我是新手,如果可能的话,请给我一个简单的答案。我想编码某些地方出了问题,但我真的不知道是哪里出了问题! 问题 - 我按提交后收到电子邮件,但在我的收件箱中只显示主题行,不显示消息、电子邮件或发送者的姓名。
请帮帮我!
这是 HTML 代码:
<form action="result.php" method="post">

<input name="Name" class="" type="text" value="Name (Required)" onfocus="if(this.value == 'Name (Required)') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Name (Required)'; }" />

<input name="Email" class="" type="text" value="Email (Required)" onfocus="if(this.value == 'Email (Required)') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Email (Required)'; }" />

<input name="Subject" class="" type="text" value="Subject" onfocus="if(this.value == 'Subject') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Subject'; }" />

<textarea name="Detail" cols="" rows="" onfocus="if(this.value == 'Describe your project in detail...') { this.value = ''; }" onblur="if(this.value == '') { this.value = 'Describe your project in detail...'; }">Describe your project in detail...</textarea>

<input type="submit" name="submit" action="submit" value="submit"  class="submitbtn" />
<input type="reset" name="reset" action="reset" value="reset" class="resetbtn" />
</form>

以及 PHP 代码:

<?php
$name = $_POST['Name'];
$email = $_POST['Email'];
$subject = $_POST['Subject'];
$detail = $_POST['Detail'];
$to = "info@philippamichael.com";
$subject = "Contact Form Submission";
mail ($to, $subject, $detail, "From" . $name);
echo "Thank You. Your Message has been sent.";

?>

我认为你的From头部格式不正确。将"From" . $name 更改为"From: " . $email . "\r\n" - War10ck
3个回答

3

您似乎没有在任何地方使用$email,而且您的发件人标头格式不正确。也许可以尝试以下内容:

<?php
$name = $_POST['Name'];
$email = $_POST['Email'];
$subject = $_POST['Subject'];
$detail = $_POST['Detail'];

$to = "info@philippamichael.com";
$subject = "Contact Form Submission";
$message = $detail . "\n\nFrom Name: {$name}";
$message .= "\nFrom Address: {$email}";

mail ($to, $subject, $message , "From: info@philippamichael.com");

echo "Thank You. Your Message has been sent.";

请注意,我完全删除了您的发件人标头,因为您不想从任意地址发送。最好使用一个无回复地址或类似的地址,来自您自己的域名,并在电子邮件正文中包含联系信息。


我不明白为什么这个被踩了。她问为什么在发送的消息中没有看到电子邮件值。我指出这是因为您没有在发送的电子邮件消息中包含该值,并提出了一个解决方案。 - oliakaoil
OP在她的电子邮件代码中发现了多个问题:“显示主题行,但不显示消息、电子邮件或发送者的姓名。”本帖仅针对其中一个问题提出了可能的解决方案。此外,它更像是一些建议,没有提供任何代码或参考文档来说明为什么应该这样做,以及如何正确使用mail()函数。 - War10ck
谢谢您的详细解答。这个回答更加完整了。我已经取消了我的负评。 - War10ck

1

请查看邮件函数:http://www.php.net/manual/zh/function.mail.php

 bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

第四个参数是 additional_headers,因此您的格式可能有误。尝试:
mail ($to, $subject, $detail, "From: " . $name);

0

您的头文件有误...请使用以下语法。

$to = "info@philippamichael.com";
$subject = "Contact Form Submission";
$message = $detail;
$headers = "From: ".$name;
$headers .= "\r\nMIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;\r\n";
mail($to,$subject,$message,$headers);

这应该可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接