2012-03-22 16 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"; –

+0

問題はなんですか?あなたは「問題があった」ということを得ますか?ステータスメッセージ?あなたはWindowsまたはUnix/Linuxホストですか?ローカルメールサーバーが誤って構成されている、メッセージを完全に拒否した、またはまったく存在しない場合、mail()はfalseを返します。 –

答えて

2

あなたの問題はサーバーの設定だと思われます。あなたは地元ですか?あなたは共有ホスティングプランにいますか?後者にドメインの問題がある場合は、ホスティングソリューションに問い合わせて、正しく設定しているかどうかを確認してください。また、サーバーのエラーログも確認してください。

+0

私はホストを介して電子メールを設定するために、有益なドメインが必要であることを理解しました – rudawg

+0

私が知っていた方法を推測します、それは一度も私に起こった;) –

+0

ハハも私がさらに時間を無駄にした:Pありがとう:D – rudawg

0

私の最初の推測では、ローカルのメールサーバーを設定する必要があります、その場合には、ローカルでこれを実行しているということです。

また、$senderMessageのような変数のいずれかが"0"の場合、if ($senderName && $senderEmail && $senderMessage)は失敗します。

0

<form>が見つかりません。それが問題を起こすかもしれません。

関連する問題