0

Windows Azure で実行されているサイトに、人々が連絡を取るための簡単な連絡先フォームが含まれています。残念ながら、そのフォームは現在機能していません...

次のフォームを含む index.php ファイルがあります。

<div class="form">name="name" placeholder="Name" id="contactname" />
    <input type="text" name="email" placeholder="Email" id="contactemail" />
    <textarea name="message" placeholder="Message" id="contactmessage"></textarea>
    <button>Contact</button>
</div>

次に、次のようなJSファイルがあります。

if ($('#contact').is(":visible")) {
$("#contact button").click(function() {

    var name     = $("#contactname").val();
    var message  = $("#contactmessage").val();
    var email    = $("#contactemail").val();
    var emailReg = /^[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}(\.[a-zA-Z]{2,3})?(\.[a-zA-Z]{2,3})?$/;

    // client-side validation
    if(emailReg.test(email) == false) {
        var emailValidation = false;
        $('#contactemail').addClass("error");
    }
    else
        $('#contactemail').removeClass("error");

    if(name.length < 1) {
        var nameValidation = false;
        $('#contactname').addClass("error");
    }
    else
        $('#contactname').removeClass("error");

    if(message.length < 1) {
        var messageValidation = false;
        $('#contactmessage').addClass("error");
    }
    else
        $('#contactmessage').removeClass("error");

    if ((nameValidation == false) || (emailValidation == false) || (messageValidation == false))
        return false;

    $.ajax({
        type: "post",
        dataType: "json",
        url: "send-email.php",
        data: $("#contact").serialize(),
        success: function(data) {

            $('.form').html('<p class="success">Thanks for getting in touch - we\'ll get back to you shortly.</p>');

        }
    });
    return false;
});

};

最後に、send-email.php という電子メールを送信するための php ファイル:

$destination = 'info@clouddock.co'; // change this to your email.

// ##################################################
// DON'T EDIT BELOW UNLESS YOU KNOW WHAT YOU'RE DOING
// ##################################################

$email   = $_POST['email'];
$name    = $_POST['name'];
$message = $_POST['message'];
$subject = $name;
$headers = "From: ".$name." <".$email.">\r\n" .
         "Reply-To: ".$name." <".$email.">\r\n" .
         "X-Mailer: PHP/" . phpversion() . "\r\n" .
         "MIME-Version: 1.0\r\n" .
         "Content-Type: text/plain; charset=\"iso-8859-1\r\n" .
         "Content-Transfer-Encoding: 8bit\r\n\r\n";

mail($destination, $subject, $message, $headers);

}

お問い合わせフォームに入力すると、JS 検証が機能しているように見えます。送信をクリックすると、メッセージが送信されたかのように「ご連絡いただきありがとうございます...」というテキストが表示されます。しかし、私は電子メールを受け取りません。問題がどこにあるのか、誰でもアドバイスできますか? Azure の構成がメッセージの送信をブロックしている可能性はありますか?

4

2 に答える 2

1

送信するデータを取得するために使用$("#contact").serialize()していますが、 ID を持つ要素がありませんcontact。使用する必要があります$("#contactname, #contactemail, #contactmessage").serialize()(そして最初の入力を修正します;))。

また、JS だけでなく、常に PHP で入力データを検証してください。

于 2013-09-03T15:26:35.877 に答える