为什么wp_mail()函数没有发送任何电子邮件,并在Chrome‘Network’响应中显示‘0’

时间:2015-02-27 作者:Kar19

我正试图通过WordPress使用wp_mail() 功能,但似乎不起作用。

它正在显示0 在Chrome“网络”响应中,使用

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>" );

            }
        }
    }); 


});

1 个回复
最合适的回答,由SO网友:Jason Murray 整理而成

由于这是一个AJAX函数,您的函数必须exit;die(); 在执行代码的最后一行之后,在这种情况下,在最后一行之前的if语句之外}

然而,我认为这不是真正的问题,如果你得到0 根据我的经验,这意味着该函数没有运行,因为admin ajax。php返回0 如果它到达了文件的末尾,并且没有使用您的函数。

您可以发布AJAX请求吗?

也用于调试(因为您的函数目前实际上没有返回任何内容),在exit;die(); 您可能需要添加一个响应来检查您的函数是否正在实际执行,我通常使用如下方式:

    header("Content-Type: application/json", true);
    echo json_encode( array("AJAX" => "Success") );

结束

相关推荐

Virtual Pages plugins

我很难让插件正常工作Virtual Pages (WordPress插件可简化虚拟页面的创建)我确实进行了编辑,根据查询创建了一个循环。add_action( \'gm_virtual_pages\', function( $controller ) { /* Creating virtuals pages for companies */ $args = array( \'post_type\' => array(\'companies\',), \'post_status\'