0

これは何度も回答されている問題だと思いますが、問題を解決するために何時間も費やした後も、まだ連絡フォームに問題があります.

フォームを送信すると、submit.php ページにリダイレクトされ、ありがとうメッセージが表示されますが、$email_to アドレスにメールが送信されません。

このコードは Wordpress のテーマ内にあり、現在私のローカル マシンで実行されていることに注意してください (これは何かに影響しますか?)

ここで私が間違っていることがあるかどうか誰かに教えてもらえますか? プラグインを間違って使用しているように感じます。この ajax ゲームは初めてです。

次のプラグインを使用しています。

  • Jquery フォーム プラグイン (http://pastebin.com/cC5899ns)
  • Jquery 検証 (http://pastebin.com/GyYuVwAH)

ここに私のHTMLがあります:

<div id="footer">
                <h3>Contact</h3>
                <div id="preview"></div>
                <form name="form" id="form" action="<?php bloginfo('template_directory'); ?>/_/inc/submit.php" method="post">
                    <input type="text" value="Your name" name="name" />
                    <input type="tel" value="Your contact number" name="email" />
                    <textarea name="message">Quick Note</textarea>
                    <button>Submit</button>
                </form>
            </div>

私のJS:

$(document).ready(function (){

$('#form').validate(
{
rules:
{
"name":{
required:true,
maxlength:40
},
"email":{
required:true,
email:true,
maxlength:100
},
"message":{
required:true
}},

messages:
{
"name":{
required:"This field is required"
},
"email":{
required:"This field is required",
email:"Please enter a valid email address"
},
"message":{
required:"This field is required"
}},

submitHandler: function(form){
$(form).ajaxSubmit({
target: '#preview',
success: function() {
alert('hello');
$('#foooter').slideUp('fast');
}
});
}

})
});

私のSubmit.php

<?php
include("db.php");

if($_SERVER["REQUEST_METHOD"] == "POST")
{
    $name=mysql_real_escape_string($_POST['name']);
    $email=mysql_real_escape_string($_POST['email']);
    $message=mysql_real_escape_string($_POST['message']);
    if(strlen($name)>0 && strlen($email)>0 && strlen($message)>0)
        {
            $email_to = "*********";
            $email_from = $email;
            $email_subject = "Contact Form";
            $email_message = stripslashes($message);

            $headers = 'From: '.$email_from."\r\n" .
            'Reply-To: '.$email_from."\r\n";

            mail($email_to, $email_subject, $email_message, $headers);

            $time=time();
            mysql_query("INSERT INTO contact (name,email,message,created_date) VALUES('$name','$email','$message','$time')");
            echo "<h1>Thank You !</h1>";
        }
}
?>

私のdb.php

<?php
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "*****";
$mysql_database = "******";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");

?>
4

2 に答える 2

0

contactテーブルはレコードで更新されていますか? もしそうなら、私が間違っていると思われることが2つあります。

1) mailのドキュメントから:Lines should not be larger than 70 characters.

2) また、ローカルホストが電子メールを送信するように設定されていない場合、電子メールを受信することは期待できません。

contactテーブルが更新されている場合は、#2 が問題であると思います。

この質問を持つ他のstackoverflowユーザー:

ローカルホストからメールを送信する

localhost からのメール送信のオプション

更新: 機能が動作していることを確認できるまで、電子メールの部分を削除またはコメントアウトしてください。ローカルホストのメール サーバーのセットアップには多くの手間がかかるため、電子メールを送信できることを確認できるまで、これらの部分について心配する必要はありません。AJAX を使用せずに、テスト ファイルでこのプロセスを試してください。メールが機能しているか、機能していないかを確認するための警告メッセージとエラー メッセージが多数表示されます。

通常の GET ページで実行できることがわかるまで、AJAX 内で動作する電子メールなどの機能を取得しようとしないでください。

于 2012-04-12T12:32:36.497 に答える
0

データベースに正しく追加されますか? では、唯一の問題は電子メールが送信されていないことですか?

その場合の問題は、localhost を使用して mail() を送信していることです。これは、Windows マシン上にあると想定しています。Windows (通常) には localhost にメール サーバーがないため、localhost を送信することはできません。これには実際の電子メール サーバーを使用し、サーバー アドレスを php.ini に割り当てる必要があります。

これらの設定:

SMTP = smtp.example.com
smtp_port = 25

詳細はこちら

于 2012-04-12T12:35:58.170 に答える