php联系表单错误代码?

时间:2013-03-21 13:48:03

标签: php

我是php的初学者,我试图编写一个简单的联系表单。我的问题是:我的代码有什么问题?我似乎无法找到任何形成或任何错误...这是我的代码:

contact.php:

    ...page content...
    <div class="contact">              
            <form action="send_mail.php" method="post">
             <fieldset>
                  <label for="name">Name:</label>
                  <input type="text" name="name" placeholder="Enter your name" />   
                  <label for="email">Email:</label>
                  <input type="email" name="email" placeholder="Enter your email address" />        
              <label for="message">Message:</label>
              <textarea name="message" placeholder="What's on your mind?"></textarea>
              <br>
              <input type="submit" name="submit" value="Send message" />

             </fieldset>
              </form>
</div>

...page content...

send_mail.php:

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: My website'; 
    $to = 'someone@email.cz'; 
    $subject = 'My contact form message';

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {              
         if (mail ($to, $subject, $body, $from)) { 
             echo '<p>Your message has been sent!</p>';
           } else {                                            
             echo '<p>Something went wrong, go back and try again!</p>'; 
           } 
    }
?>

我收到“Something goes wrong”消息,这意味着taht mail()返回false但我不知道为什么。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

这是在本地计算机上运行脚本的常见问题。大多数计算机都没有电子邮件服务器,并且配置为从该服务器发送电子邮件。

要使PHP邮件功能正常工作,您的计算机必须设置电子邮件服务器。 您可以查看具有电子邮件支持的在线托管或本地测试,安装测试邮件服务器。

最后有一些关于非mac OS的内容。我过去运气不错。

如果您在Windows上,这可能更好:http://www.toolheap.com/test-mail-server-tool/

答案 1 :(得分:2)

您的标题需要包含正确的headers 仅使用From: My website代表进入垃圾邮件。
使用电子邮件=&gt; From: $email\r\n会更好。

试一试,经过测试。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$headers = "From: $email\r\n";
$to = 'your_email@somewhere.com'; 
$subject = 'My contact form message';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";

if(empty($email)) {
die("Something went wrong, go back and try again!"); 
}
elseif (isset($_POST['email'])) {
mail($to,$email,$body,$headers);
echo "<p>Your message has been sent!</p>";
} 
?>

答案 2 :(得分:1)

1。为了使这个代码工作。你应该从任何域发送你的邮件。

for example: you should have a live website thru that domain email id only send mail to
others 

2。使用PHP-MAILER编码发送mail.just从网上下载并进行更改和使用