2012-03-22 158 views
1

嗨即時通訊問題與我的PHP代碼發送電子郵件通過聯繫表格。我沒有得到任何的錯誤,經過深入研究後可以看到代碼沒有問題,有人可以幫助我嗎?PHP的電子郵件聯繫表格

<?php 

// Define some constants 
define("RECIPIENT_NAME", "Nuim Buzz"); 
define("RECIPIENT_EMAIL", "[email protected]"); 
define("EMAIL_SUBJECT", "Visitor Message"); 

// Read the form values 
$success = false; 
$senderName = isset($_POST['senderName']) ? preg_replace("/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName']) : ""; 
$senderEmail = isset($_POST['senderEmail']) ? preg_replace("/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail']) : ""; 
$senderMessage = isset($_POST['senderMessage']) ? preg_replace("/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['senderMessage']) : ""; 

// If all values exist, send the email 
if ($senderName && $senderEmail && $senderMessage) { 
    $recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">"; 
    $headers = "From: " . $senderName . " <" . $senderEmail . ">"; 
    $success = mail($recipient, EMAIL_SUBJECT, $senderMessage, $headers); 
} 


?> 
<html> 
    <head> 
    <title>Thanks!</title> 
    </head> 
    <body> 
    <?php if ($success) echo "<p>Thanks for sending your message! We'll get back to you shortly.</p>" ?> 
    <?php if (!$success) echo "<p>There was a problem sending your message. Please try again.</p>" ?> 
    <p>Click your browser's Back button to return to the page.</p> 
    </body> 
</html> 

的HTML代碼:

<h2>Send us an email...</h2> 

    <ul> 

    <li> 
     <label for='senderName'>Your Name</label> 
     <input type='text' name='senderName' id='senderName' placeholder='Please type your name...' required='required' maxlength='40' /> 
</li> 

<li> 
    <label for='senderEmail'>Your Email Address</label> 
    <input type='email' name='senderEmail' id='senderEmail' placeholder='Please type your email address...' required='required' maxlength='50' /> 
</li> 

<li> 
    <label for='message' style='padding-top: .5em;'>Your Message</label> 
    <textarea name='senderMessage' id='message' placeholder='Please type your message...' required='required' cols='80' rows='10' maxlength='10000'></textarea> 
</li> 

    </ul> 

    <div id='formButtons'> 
    <input type='submit' id='sendMessage' name='sendMessage' value='Send Email' /> 

    </div> 

</form> 
+0

你有沒有做過任何類型的測試,看看它是否進入IF語句發送電子郵件?我這樣做的快速和骯髒的方式是在該循環內添加:echo「HIT」; – 2012-03-22 19:45:14

+0

問題到底是什麼?你得到「有問題」?狀態消息?你在Windows或Unix/Linux主機上?如果本地郵件服務器配置錯誤,完全拒絕您的郵件或根本不存在,則mail()將返回false。 – 2012-03-22 19:53:02

回答

2

看來你的問題是服務器設置。你是本地人嗎?您是否在共享託管計劃?如果後者存在域名問題,請聯繫您的託管解決方案以確保您的設置正確。同時檢查你的服務器錯誤日誌。

+0

感謝剛剛發現我需要一個付費域名,以便通過我的主機設置電子郵件,哦,好吧,謝謝你們 – rudawg 2012-03-22 19:59:36

+0

猜猜我是怎麼知道的,它發生在我身上一次也;) – 2012-03-22 20:01:13

+0

哈哈,我很幸運,沒有或我會浪費了更多時間:P謝謝你:D – rudawg 2012-03-23 07:26:05

0

我的第一個猜測是,你在本地運行這一點,在這種情況下,你需要建立一個本地郵件服務器。

而且,如果任何這些變量(例如$senderMessage)爲"0",則if ($senderName && $senderEmail && $senderMessage)將失敗。

0

我找不到<form>。可能會導致問題。