2015-11-20 147 views
1

我有一個經典的PHP表單提交錯誤。我之前測試過這些代碼,並且在再次測試時似乎正在運行,電子郵件從未到達。PHP提交錯誤

這是HTML(我改變了網站/電子郵件地址,當然安全原因)

<!-- Contact Form --> 
<form method="post" action="http://example.net/assets/mail/mail.php"> 
    <div class="row 50%"> 
    <div class="6u 12u(mobile)"><input type="text" name="name" placeholder="Name" /> 
    </div> 
    <div class="6u 12u(mobile)"><input type="email" name="email" placeholder="Email" /> 
    </div> 
</div> 
<div class="row 50%"> 
<div class="12u"><textarea name="message" placeholder="Message" rows="6"></textarea> 
</div> 
</div> 
<div class="row"> 
<div class="12u"> 
<ul class="actions"> 
<li> 
    <input type="submit" value="Send Message" /> 
</li> 
</ul> 
    </div> 
</div> 
</form> 

這是PHP文件:

<?php $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $formcontent="From: $name \n Message: $message"; 
    $recipient = "[email protected]"; 
    $subject = "Contact Form"; 
    $mailheader = "From: $email \r\n"; 
    mail($recipient, $subject, $formcontent, $mailheader) or die("Error!"); 
    echo "Thank You!"; 
?> 

的PHP文件位於同一將HTML鏈接放置到:http://example.net/assets/mail/mail.php,並且電子郵件本身工作正常(每天使用它)。當我測試表單時,我收到echo/message表示感謝,所以肯定會找到PHP文件,但是我根本就沒有在我的收件箱中得到任何東西。

是這樣一個簡單的代碼,但我真的很困惑和不確定發生了什麼事情。

任何幫助真的很感激它。

+0

您是否使用其他電子郵件地址進行了測試?看看你的垃圾郵件?確保您的服務器操作系統未被列入黑名單 – wilson

+0

您是否檢查過來自php的日誌錯誤?也許郵件功能正在拋出一些警告。 – AndreaBogazzi

回答

0

電子郵件可能被阻塞在服務器的郵件隊列中,或被電子郵件主機阻止爲垃圾郵件。對於基於Linux的系統,電子郵件通常記錄在/ var/logs目錄中,並且應該在基於Windows的服務器上具有相同的功能。從這裏你應該能夠看到服務器是否將電子郵件發送到世界。

0

該代碼似乎是正確的。 真正的問題是使用php的郵件功能。如果你看看official documentation,你可以看到傳遞給函數的參數必須滿足特殊要求。 此外,使用電子郵件()與Windows或Linux有一些區別。

我的建議是不要直接使用mail()但庫發送的PHPMailerhttps://github.com/PHPMailer/PHPMailer

0

你的代碼是正確的!這似乎是一個郵件服務器問題。嘗試更改收件人郵件地址並檢查您的服務器是否在黑名單中:http://mxtoolbox.com/blacklists.aspx