Php 没有使用Ajax联系人表单发送电子邮件(在Wordpress中)

Php 没有使用Ajax联系人表单发送电子邮件(在Wordpress中),php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我正试图用Wordpress构建一个简单的Ajax联系人表单,并使用以下代码进行验证(jQuery验证插件): Html <script type="text/javascript"> var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; </script> function.php function send_my_mail(){ ... //sends email } add_a

我正试图用Wordpress构建一个简单的Ajax联系人表单,并使用以下代码进行验证(jQuery验证插件):

Html

<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>'; 
</script>
function.php

function send_my_mail(){
    ... //sends email
}
add_action('wp_ajax_sendmail', 'send_my_mail');
add_action('wp_ajax_nopriv_sendmail', 'send_my_mail');
当我提交表单时,浏览器控制台将检索此“确定”消息:

POST http://www.domain.com/wp-admin/admin-ajax.php 200 OK 3.45s 
但没有发送电子邮件。我不明白密码里有什么错误

为什么不使用函数


如果SMTP连接不起作用,请使用其他SMTP连接。您可以使用gmail SMTP进行测试,看看这是否是您正在使用的SMTP的问题。

问题在于您使用了jQuery.ajax中不存在的“操作”选项。您只需在数据选项中将操作传递给WP,如下所示:

$("#form").validate({  //jquery validate plugin

    ... // rules

    submitHandler: function(form) {

    var data = $('form').serialize();

        $.ajax({
            url: ajaxurl,
            type: "POST",
            data: data + '&action=sendmail',        
            cache: false,

            success: function (html) {           
                ... // succesful message         
            }
        }); 

        return false;

    } // end submitHandler

}); // end Validate

你不会跨域的,是吗?也许您应该发布实际的send_my_mail代码。“action”不是jquery ajax选项,因此删除action:“sendmail”并将其添加到您的数据中:data.action=“sendmail”(或在表单中添加一个名为action且值为“sendmail”的隐藏字段)@RafH:no,尝试使用
data:data.action=“sendmail”,而不是
data:data,
但它是same@FredK只需尝试在不使用if语句的情况下发送邮件。看看现在是否有效。只需在表单中添加一个名为“action”且值为“sendmail”的隐藏字段,或将
data:data
修改为
data:data+'&action=sendmail'
在我使用您在这个问题中看到的代码之前,我使用了此处发布的代码,它可以完美地发送电子邮件。然后我认为问题不在于SMTP当您使用simple mail()函数时,它不使用WP-config.php中提供的WP-SMTP
$("#form").validate({  //jquery validate plugin

    ... // rules

    submitHandler: function(form) {

    var data = $('form').serialize();

        $.ajax({
            url: ajaxurl,
            type: "POST",
            data: data + '&action=sendmail',        
            cache: false,

            success: function (html) {           
                ... // succesful message         
            }
        }); 

        return false;

    } // end submitHandler

}); // end Validate