2010-02-19 116 views
3

我在頁面上有一個聯繫表單,它將表單的詳細信息發送到一個電子郵件地址。你可以在這裏查看,www.wonder.iePHP聯繫表格不發送

該窗體的HTML如下:

<form id="form" name="form27" class="wufoo page" enctype="multipart/form-data" method="post" action="mailer.php"> 
    <ul> 
     <li id="foli1"> 
      <label class="op" id="title1" for="Field1">Name</label> 
      <div><input id="Field1" name="name" type="text" class="op required" value="" maxlength="255" tabindex="1" onkeyup="handleInput(this);" onchange="handleInput(this);" /></div> 
     </li> 

     <li id="foli2"> 
     <label class="op" id="title2" for="Field2">Email</label> 
      <div><input id="Field2" name="email" type="text" class="op required email" value="" maxlength="255" tabindex="2" onkeyup="handleInput(this);" onchange="handleInput(this);" /></div> 
     </li> 

     <li id="foli3"> 
      <label class="op" id="title3" for="Field3">Inquiry</label> 
      <div><textarea id="Field3" name="message" class="op required" rows="10" cols="50" tabindex="3" onkeyup="handleInput(this);" onchange="handleInput(this);"></textarea></div> 
     </li> 
     </ul> 
     <input id="button" name="saveForm" class="btTxt submit" type="submit" value="Submit" />   
</form> 

而對於我的PHP是這樣的:

<?php 
if(isset($_POST['submit'])) { 
$to = "[email protected]"; 
$subject = "Email from Wonder.ie"; 
$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$message = $_POST['message']; 

$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message"; 

mail($to, $subject, $body); 
} else { 
echo "blarg!"; 
} 
?> 

是否一切看起來是正確的?我知道我的表單名稱與PHP正確匹配,但我無法弄清楚爲什麼我沒有收到您所知道的電子郵件。僅供參考,網站上的PHP有一個真實的電子郵件地址,而不是[email protected]。一旦我點擊提交按鈕,我被帶到mailer.php,但我注意到回聲「blarg!」所以我的猜測是電子郵件沒有被髮送。

謝謝!

回答

10

你應該改變

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

if(isset($_POST['saveForm'])) { 
+0

這是100%正確的;當你訪問$ _POST中的變量時,它們通過表單元素的name屬性進行標記。 – Erik 2010-02-19 20:38:36

2

嘗試改變

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

if(isset($_POST['saveForm'])) { 

這是因爲$ _POST查找表單輸入的名稱,而不是類型。你檢查

0

發送引導你的PHP代碼,如果$_POST['submit']設置,但在你的HTML代碼,你給了提交按鈕saveForm的名字,所以你應該改變行

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

if(isset($_POST['saveForm'])) { 

希望這有助於你:)

0

在你的HTML你有

<input id="button" name="saveForm" class="btTxt submit" type="submit" value="Submit" /> 

但在PHP文件時您檢查$_POST["submit"],這是不對的。

您需要更改if(isset($_POST['submit']))if(isset($_POST['saveForm']))

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

0

有些電子郵件服務器將不接受沒有適當的報頭電子郵件,並且沒有提供任何。這是我使用的。

http://us2.php.net/manual/en/function.mail.php

$header = "From: ".$fromText."\r\n"; 
$header .= "Cc: ".$ccText."\n"; 
$header .= "Reply-To : ".$fromText."\r\n"; 
$header .= "Return-Path : ".$fromText."\r\n"; 
$header .= "X-Mailer: PHP\r\n"; 
$header .= "MIME-Version: 1.0\r\n"; 
$header .= "Content-Type: text/plain; charset=iso-8859-1\r\n"; 
mail($toText, $subjectText, $msgText, $header, '-f'.$fromText); 
0

你的問題是它的倒出來blarg。 它肯定後沒有達到你的

代碼 - >

mail($to, $subject, $body);

和的名義提交改爲

'saveForm'

順便說一下:) ..

只是試圖

mail($to, $subject, $body); 

x.php,它和恰克上傳,主題和正文,以正確的事情 ,如果它發送,則郵件功能工作正常。

if(@mail($emailRecipient, $subject, $message, $headers)) 
    { 
     echo "Mail Sent Successfully"; 
    }else{ 
     echo "Mail Not Sent"; 
    } 

這也是一個很好的代碼,我已經在計算器 發現檢查郵件功能工作。

0

您使用

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

,但是,你必須提交按鈕的名稱保存爲saveForm
因此,使用

if(isset($_POST['saveForm'])) {