私はwp_mail()
関数を使ってWordPress経由で電子メールを送信しようとしていますが、うまくいかないようです。
Chromeの「ネットワーク」レスポンスに0
を表示しています
Status Code:200 OK
これは私のコード部分です:
// Contact form Ajax
add_action('wp_ajax_nopriv_submit_contact_form', 'submit_contact_form');
function submit_contact_form(){
if(isset($_POST['email'])) {
$email = $_POST['email'];
$email_to = "[email protected]";
$Host = "ssl://smtp.gmail.com:465";
$username = '[email protected]';
$password = 'passpass';
$email_subject = "You have a new email from $email via company.com website";
$message = $_POST['text'];
$headers = array ('From' => $email, 'To' => $email_to,'Subject' => $email_subject);
/*$smtp = Mail::factory('smtp',
array ('Host' => $Host,
'auth' => true,
'username' => $username,
'password' => $password));*/
//$mail = $smtp->send($email_to, $headers, $message);
wp_mail( $email_to, $email_subject, $message );
/*if (PEAR::isError($mail)) {
echo($mail->getMessage());
} else {
echo("Message successfully sent!\n");
}*/
}
}
error_reporting(E_ALL);
ini_set("display_errors", 1);
どの部分が間違っている可能性がありますか?
編集する
これがajaxの部分です。
// Send button for the "contact form".
$('#sendBtn').click(function(){
//get info
var fullname = $("#fullname").val();
var email = $("#email").val();
var text = $("#text").val();
//send info to php
$.ajax({
beforeSend: function() {
if ( IsEmail(email) == false) {
$('#aboutUnsuccess').show("slow");
$('.form_content').hide("slow");
}
},
url: document.location.protocol+'//'+document.location.Host+'/wp-admin/admin-ajax.php',
type: "POST",
/*action: 'submit_contact_form',*/
data: ({ "action": "submit_contact_form", "fullname": fullname, "email": email, "text": text }),
success: function (results){
if ( IsEmail(email) == true) {
//hide table
$('.form_content').hide('slow', function() {
$('.form_content').hide( "slow" );
});
//show textboxes
$('#aboutSuccess').show("slow");
$( "#aboutSuccess" ).append( "<iframe id=\"pixel-thing\" src=\"http://54.xx.xx.xx/wp-content/themes/twentyfifteen-child/thePixel.html\" width=\"1\" height=\"1\" border=\"0\"></iframe>" );
}
}
});
});
これはAJAX関数なので、実行するコードの最後の行の後、最後のexit;
の前のifステートメントの外側に、関数を}
またはdie();
にする必要があります。
しかし、これは本当の問題ではないと思います。私の経験で0
が返されている場合は、admin-ajax.phpがファイルの末尾に到達してピックアップしない場合は0
を返すため、関数は実行されません。あなたの機能.
AJAXリクエストを投稿できますか?
exit;
またはdie();
の前に、デバッグのために(あなたの関数は実際には何も返さないので)、あなたの関数が実際に実行されていることを確認するための応答を追加したいかもしれません。
header("Content-Type: application/json", true);
echo json_encode( array("AJAX" => "Success") );