2014-01-22 42 views
0

我試圖讓訪問我的網站的人通過填寫一個簡短的表格並讓網站向我發送一封包含這些信息的電子郵件來訂閱,但此時表單不會甚至提交信息。一些幫助將不勝感激。訂閱表格無法使用(PHP)

<form id="ContactForm" action="mail/MailHandler.php"> 
    <div class="success">Form submitted!<br><strong>Look forward to our next Monthly Mailer.</strong></div> 
    <fieldset> 
    <div class="wrapper"> 
     <label class="name"> 
     <span class="bg"><input type="text" value="Name:" class="input"></span> 
     <span class="error">*This is not a valid name.</span> 
     <span class="empty">*This field is required.</span> 
     </label> 
    </div> 
    <div class="wrapper"> 
     <label class="email"> 
     <span class="bg"><input type="text" value="E-mail:" class="input"></span> 
     <span class="error">*This is not a valid email address.</span> 
     <span class="empty">*This field is required.</span> 
     </label> 
    </div> 
    <div class="btns"> 
     <a href="mail/MailHandler.php" class="button1" data-type="submit"> 
     <span><strong>submit</strong></span> 
     <span class="active"><strong>submit</strong></span> 
     </a> 
    </div> 
    </fieldset> 
</form> 

與PHP如下

<?php 
$owner_email = $_POST["[email protected]"]; 
$headers = 'From:' . $_POST["email"]; 
$subject = 'Monthly Mailer Subscriber ' . $_POST["name"]; 
$messageBody = ""; 

$messageBody .= '<p>' . $_POST["name"] . ' would like to be subscribed to your Monthly Mailer!</p>' . "\n"; 
$messageBody .= '<br>' . "\n"; 
$messageBody .= '<p>Email Address: ' . $_POST['email'] . '</p>' . "\n"; 
$messageBody .= '<br>' . "\n"; 

try{ 
    if(!mail($owner_email, $subject, $messageBody, $headers)){ 
     throw new Exception('mail failed'); 
    }else{ 
     echo 'mail sent'; 
    } 
}catch(Exception $e){ 
    echo $e->getMessage() ."\n"; 
} 
?> 

問題解決了!問題在於我的輸入沒有名稱,並且 $ owner_email = $ _POST [「[email protected]」]的語法; 應該是 $ owner_email ='[email protected]';

+0

的郵件功能是不可靠的,請嘗試使用PHP郵件類像SwiftMailer –

回答

4

問題#1

您正在尋找POST變量,但通過GET要發送它們,因爲你從來沒有明確將其設置爲POST。爲了解決這一變化:

<form id="ContactForm" action="mail/MailHandler.php"> 

到:

<form id="ContactForm" action="mail/MailHandler.php" method="POST"> 

問題#2

你忘了給您的投入名稱:

<input type="text" value="Name:" class="input"> 

應該是:

<input type="text" value="Name:" name="name" class="input"> 

問題#3

你缺乏一個提交按鈕:

<input type="submit" value="submit"> 

應該替換:

<a href="mail/MailHandler.php" class="button1" data-type="submit"> 
    <span><strong>submit</strong></span> 
    <span class="active"><strong>submit</strong></span> 
    </a> 
+0

我試過,但沒有骰子。我不完全確定PHP是如何工作的,但是我需要某種類型的js來支持這些嗎? – user3224788

+0

此工作不需要JavaScript。當提交按鈕被按下時,是否有任何事情發生?如果不是,你的HTML無論如何都是無效的。 –

+0

哦!我得到它做_something _...我得到它拋出「郵件失敗」的例外......至少我知道它現在提交的東西。 – user3224788

0

你沒有設置你的表單元素名稱。

你需要改變你的輸入以下內容:在PHP

<input type="text" value="E-mail:" name="email" class="input"> 
    <input type="text" value="Name:" name="name" class="input">