PHP联系表单未在电子邮件中收到

时间:2013-08-12 23:17:03

标签: php html forms contact

我知道已经有一些这样的帖子了,我通读了它们,但无法找到我的问题的解决方案。 PHP和HTML看起来不错,所以我不确定为什么我没有从提交的联系表单中收到任何电子邮件。

这是PHP:

<?php

$Fname = $_POST ['Fname'];
$Lname = $_POST ['Lname'];
$email = $_POST ['email'];
$message = $_POST ['message'];

$to = 'myName@mywebsite.com';
$subject = 'Contact From My Website';
$msg = " First Name: $Fname/n" .
"Last Name: $Lname/n" .
"Email: $email/n" .
"Message: $message";

mail ($to, $subject, $msg,"From: " . $Fname . $Lname);

$confirm = "Thank you for contacting us! Please allow 48 hours for a representative to respond. Click <a href='contact.php'>here</a> to return to the previous page.";

?>

这是HTML表单代码:

<form id="form1" name="form1" method="post" action="send.php">
                <tr>
                    <label><td width="160px" class="labels">First Name:&nbsp;&nbsp;</td>
                        <td class="input"><input type="text" name="Fname" id="Fname"/></td>
                    </label>
                </tr>
                <tr>
                    <label><td class="labels">Last Name:&nbsp;&nbsp;</td>
                        <td class="input"><input type="text" name="Lname" id="Lname"/></td>
                    </label>
                </tr>
                <tr>    
                    <label><td class="labels">Email:&nbsp;&nbsp;</td>
                        <td class="input"><input type="email" name="email" id="email"/></td>
                    </label>
                </tr>
                <tr>    
                    <label><td class="labels">Message:&nbsp;&nbsp;</td>
                        <td class="input"><textarea name="message" id="message" cols="30" rows="5"></textarea></td>
                    </label>                                    
                </tr>
                <tr>                        
                    <td class="labels"><input type="submit" name="submit" id="submit" value="Submit"/></td>
                </tr>
            </form> 

任何帮助都会有很大帮助

3 个答案:

答案 0 :(得分:1)

编辑:

有很多错误。

不当使用\nmail()标头并在最后尝试echo成功消息。

这是经过测试和运行的邮件处理程序脚本。

注意:我添加了if{isset条件。

使用您自己的电子邮件地址更改email@example.com

<?php

if(isset($_POST['submit']))

$Fname = $_POST['Fname'];
$Lname = $_POST['Lname'];
$email = $_POST['email'];
$message = $_POST['message'];

$to = "email@example.com"; // <<< change this to your own E-mail address
$subject = "Contact From My Website";
$msg = "First Name: $Fname\n" . "Last Name: $Lname\n" . "Email: $email\n" . "Message: $message";

$headers = "From: $email" . "\r\n" .
"Reply-To: $email" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

mail($to, $subject, $msg, $headers);

echo "Thank you for contacting us! Please allow 48 hours for a representative to respond. Click <a href='contact.php'>here</a> to return to the previous page.";

?>


补编

请访问以下网址阅读mail( )函数及其正确使用标题:

该页面上有很多例子。

一个重大错误是您对/n的使用,如果有的话,所有内容都需要更改为\n

仅此一项将最终使您的处理程序失败

答案 1 :(得分:0)

“发件人”不应包含名称,而应包含来自电子邮件地址。

所以,而不是

"From: " . $Fname . $Lname

你应该这样做

"From: ". $myEmail

以下是php manual的有效标头:

$headers = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

我认为Puggan和Fred对这个答案也很有信心,因为他们已经发布了明显但尚未作出回答的答案。

您还应该确保消息标签的ID与$ _POST ['msg']匹配,因此您不应该在一个地方使用'msg'而在另一个地方使用'message'。

仅供参考:跳过函数名和参数参数之间的空格''。即。

$_POST ['stuff'];

答案 2 :(得分:-1)

添加

$headers = "From:" . $Fname . $Lname;

并使用此:

mail ($to, $subject, $msg, $headers);