2013-03-21 87 views
-1

我是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 = '[email protected]'; 
    $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>'; 
      } 
    } 
?> 

我正在「出錯了「的消息,這意味着郵件()返回false,但我不知道爲什麼。謝謝你的幫助!

+1

您在'else {'底部附近有'反斜槓' – 2013-03-21 13:50:26

+0

我更正了反斜槓,但錯誤仍然存​​在...但感謝通知 – Smajl 2013-03-21 13:52:09

+2

電子郵件是否正在交付?標準的SMTP服務器是localhost。如果您還沒有更改SMTP服務器,那麼在同一臺計算機上是否有電子郵件服務器? – Joshua 2013-03-21 13:53:06

回答

2

這是在本地計算機上運行腳本的常見問題。大多數電腦都沒有電子郵件服務器,並且被配置爲從該服務器發送電子郵件。

要使PHP郵件功能正常工作,您的計算機必須設置一個電子郵件服務器。 您既可以通過電子郵件支持查看在線託管,也可以通過本地測試來安裝測試郵件服務器。

最後有一點關於非mac OS的。過去我已經有一些運氣了。

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

+0

謝謝,這可能是... – Smajl 2013-03-21 13:56:53

2

你的頭需要包含適當的headers
只使用From: My website站在去垃圾郵件。
使用電子郵件=>From: $email\r\n會更好。

試試這個,經過測試。

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$headers = "From: $email\r\n"; 
$to = '[email protected]'; 
$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>"; 
} 
?> 
1

1。爲了使這個代碼工作,你應該從任何域發送你的郵件。

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

2。使用PHP-MAILER編碼發送郵件。只需從網上下載並進行更改並使用