2014-04-04 31 views
0

此代碼的目標是讓有人填寫它,然後它將他們輸入的消息發送到我的電子郵件。我在網上查找了一些參考資料,對於PHP來說很新穎我在理解爲什麼當我點擊發送按鈕時會顯示我的php頁面代碼。我的問題是爲什麼當按下聯繫表單上的發送按鈕時我沒有收到電子郵件?試圖創建一個聯繫我們形式

<form action="mail.php" method="POST"> 
<p>Name</p> <input type="text" name="name"> 
<p>Email</p> <input type="text" name="email"> 

<p>Priority</p> 
<select name="priority" size="1"> 
<option value="Low">Low</option> 
<option value="Normal">Normal</option> 
<option value="High">High</option> 
</select> 
<br /> 

<p>Type</p> 
<select name="type" size="1"> 
<option value="update">Question</option> 
<option value="change">Information Change</option> 
<option value="addition">Information Addition</option> 
<option value="new">Misc.</option> 
</select> 
<br /> 

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br /> 
<input type="submit" value="Send"><input type="reset" value="Clear"> 
</form> 

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$priority = $_POST['priority']; 
$type = $_POST['type']; 
$message = $_POST['message']; 
$formcontent=" From: $name \n Priority: $priority \n Type: $type \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!" . " -" . "<a href='form.html' style='text-  decoration:none;color:#ff0099;'> Return Home</a>"; 
?> 

所有幫助表示讚賞。謝謝!

+1

那麼你的問題是什麼? –

+0

爲什麼代碼發佈我的php代碼而不是發送給我一封電子郵件? – dnasim

+0

你的php代碼和form一樣在同一頁上嗎? –

回答

1
  • 您的代碼不檢查錯誤。
  • 你在同一個頁面的PHP,並沒有提到什麼是 表格文件的名稱(意味着你的行動是值得懷疑的。)

設置你action="",這樣的形式發送到頁面本身。只有在發佈表單時才執行PHP代碼,爲​​此我添加了一個name給你提交按鈕,並在PHP中檢查是否存在%_POST數組告訴Php何時執行此代碼。既然你會在同一頁面,所以我改變了錨標籤的文本。

注:此代碼假定正在對其中的電子郵件服務器配置服務器執行,並在執行過程中沒有出現錯誤

<form action="" method="POST"> 
<p>Name</p> <input type="text" name="name"> 
<p>Email</p> <input type="text" name="email"> 

<p>Priority</p> 
<select name="priority" size="1"> 
<option value="Low">Low</option> 
<option value="Normal">Normal</option> 
<option value="High">High</option> 
</select> 
<br /> 

<p>Type</p> 
<select name="type" size="1"> 
<option value="update">Question</option> 
<option value="change">Information Change</option> 
<option value="addition">Information Addition</option> 
<option value="new">Misc.</option> 
</select> 
<br /> 

<p>Message</p><textarea name="message" rows="6" cols="25"></textarea><br /> 
<input type="submit" name="sendemail" value="Send"><input type="reset" value="Clear"> 
</form> 

<?php 
if(isset($_POST["sendemail"])) 
{ 
$name = $_POST['name']; 
$email = $_POST['email']; 
$priority = $_POST['priority']; 
$type = $_POST['type']; 
$message = $_POST['message']; 
$formcontent=" From: $name \n Priority: $priority \n Type: $type \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!" . " -" . "<a href='form.html' style='text-  decoration:none;color:#ff0099;'> Go Somewhere you are already home ;)</a>"; 
} 
?> 
+0

對不起,我忘了澄清。我的php在一個名爲mail.php的單獨的php頁面上 – dnasim

0

你也有一個非常常見的錯誤有很多人有「聯繫我們「的形式。

$email = $_POST['email']; 
$mailheader = "From: $email \r\n"; 

這將打破SPF和也導致DMARC失敗,你將永遠不會從一些人得到的消息,如果你的郵件服務器使用上有和Gmail並啓用DMARC。

由於DMARC是一個較新的協議,很多舊的cookie切割器代碼聯繫我們形式 - 並沒有考慮到這一點。

你可以閱讀更多有關在這裏:"DMARC - Contact Us Form Nightmare"

的建議的解決方法將是這樣做:

$email = "[email protected]"; 
$subject = "Contact Form Email: " . $_POST['email']; 

這樣 - 你避免在文章中的問題提綱。您無法快速點擊「回覆」按鈕,但至少您會收到啓用了DMARC的客戶發送的電子郵件。