首页 > 解决方案 > 无法使用我的 wordpress 表单和 ajax 方法接收邮件

问题描述

如果一些stackoverflow用户可以帮助我,我提前感谢你。我使用 wordpress、ajax 和一个表单来接收两封邮件的提交。我没有检测到错误,但我没有在这两个奇怪的一封电子邮件上收到一次邮件。

这是我的代码:

在functions.php中

 //envoyer une variable php a js proprement

wp_localize_script('ceddev_ajax_contact_js', 'ajaxurl',admin_url('admin-ajax.php'));

add_action('wp_enqueue_scripts','ceddev_scripts');

function ajax_form_accueil(){
        check_ajax_referer( 'ajax_contact_nonce', 'security' ); // referent de securiter mis par l input hidden
               
            // CONDITIONS NOM
            if ( (isset($_POST["nom"])) && (strlen(trim($_POST["nom"])) > 0) ) {
                $nom = wp_strip_all_tags( $_POST["nom"] );
            } 

            // CONDITIONS PRENOM
            if ( (isset($_POST["prenom"])) && (strlen(trim($_POST["prenom"])) > 0) ) {
                $prenom = wp_strip_all_tags( $_POST["prenom"] );
            } 

            // CONDITIONS EMAIL
            if ( (isset($_POST["email"])) && (strlen(trim($_POST["email"])) > 0) && (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) ) {
                $email = sanitize_email( $_POST["email"]);
            } 

            // CONDITIONS MESSAGE
            if ( (isset($_POST["message"])) && (strlen(trim($_POST["message"])) > 0) ) {
                $message = nl2br( stripslashes(wp_kses($_POST["message"],$GLOBALS['allowedtags'])));
            }
            // Les messages d'erreurs ci-dessus s'afficheront si Javascript est désactivé

            // PREPARATION DES DONNEES
            $ip           = $_SERVER["REMOTE_ADDR"];
            $hostname     = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
            $destinataire = array("cedaffair@hotmail.fr", "cedsimplon@gmail.com");
            $objet        = "[Site Web] " . $prenom;
            $contenu      = "Nom de l'expéditeur : " . $nom . "\r\n";
            $contenu     .= $message . "\r\n\n";
            $contenu     .= "Adresse IP de l'expéditeur : " . $ip . "\r\n";
            $contenu     .= "DLSAM : " . $hostname;

            $headers  = "CC: " . $email . " \r\n"; // ici l'expediteur du mail
            $headers .= "Content-Type: text/plain; charset=\"ISO-8859-1\"; DelSp=\"Yes\"; format=flowed /r/n";
            $headers .= "Content-Disposition: inline \r\n";
            $headers .= "Content-Transfer-Encoding: 7bit \r\n";
            $headers .= "MIME-Version: 1.0";

            // SI LES CHAMPS SONT MAL REMPLIS
            if ( (!empty($nom)) && (!empty($prenom)) && (!empty($email)) && (filter_var($email, FILTER_VALIDATE_EMAIL)) && (!empty($message)) ) {
                wp_mail("cedsimplon@gmail.com", $objet, utf8_decode($contenu), $headers);
                  
            }
            else{
                echo '<h1> error</h1>';
            }
            wp_die();
            // Les messages d'erreurs ci-dessus s'afficheront si Javascript est désactivé
    }

    add_action( 'wp_ajax_contact', 'ajax_form_accueil' ); //executed when login
    add_action( 'wp_ajax_nopriv_contact', 'ajax_form_accueil' ); //executed when log out

在 ajaxcontact.js 中

$(document).ready(function () {
    let busy = null;
    $(".close").click(function () {
        $("#contact-mess").css({ display: "none" });
        $("#contact-mess2").css({ display: "none" });
    });
    $("#contact-form").submit(function (event) {
        let nom = $("#nom").val();
        let prenom = $("#prenom").val();
        let email = $("#email").val();
        let message = $("#message").val();
        let dataString = nom + prenom + email + message;
        let msg_all = "Merci de remplir tous les champs";
        if (dataString == "") {
            $("#contact-mess").css({ display: "block" });
            $("#alert-text").html(msg_all);
        } else if (nom == "") {
            $("#contact-mess").css({ display: "block" });
            $("#alert-text").html(msg_all);
        } else if (prenom == "") {
            $("#contact-mess").css({ display: "block" });
            $("#alert-text").html(msg_all);
        } else if (email == "") {
            $("#contact-mess").css({ display: "block" });
            $("#alert-text").html(msg_all);
        } else if (message == "") {
            $("#contact-mess").css({ display: "block" });
            $("#alert-text").html(msg_all);
        } else {
            if(busy){
                busy.abort();
            }
            busy = $.ajax({
                url: ajaxurl,
                type: "POST",
                data: $(this).serialize(),
                success: function () {
                    $("#contact-mess2").css({ display: "block" });
                    $("#alert-text2").html("Formulaire bien envoyé");
                    $("#contact-form").hide();
                },
                error: function () {
                    $("#contact-mess").css({ display: "block" });
                    $("#alert-text").html("<p>Erreur d'appel, le formulaire ne peut pas fonctionner</p>");
                },
            });
        }
        setTimeout(function () {
            $(".mess").fadeOut("fast");
        }, 4000);
        return !1;
    });
});

在我的表单前端:

 <form action="" id="contact-form" method="POST">
    <div class="form-group">
       <label  for="nom">Nom</label>
       <input type="text" name="nom" class="form-control" id="nom" aria-describedby="emailHelp" placeholder="Entrer nom">
    </div>
    <div class="form-group ">
       <label for="prenom">Prenom</label>
       <input type="text" name="prenom" class="form-control" id="prenom" aria-describedby="emailHelp" placeholder="Entrer prenom">
    </div>
    <div class="form-group">
       <label for="email">Email addresse</label>
       <input type="email" id="email" name="email" class="form-control" aria-describedby="emailHelp" placeholder="Enter email">
       <small id="emailHelp" class="form-text text-muted">Nous ne partagerons jamais votre adresse email</small>
    </div>
    <div class="form-group">
       <label for="message">Votre message</label>
       <textarea class="form-control" name="message" id="message" rows="3"></textarea>
    </div>
    <input type="hidden" name="action" value="contact"> 
    <?php wp_nonce_field('ajax_contact_nonce','security');?>
    <button type="submit" id="submit" class="btn btn-success btn-lg btn-block">Envoyer</button>

</form>

现在有两个时间在这个问题上,我需要在另一件事上进行讨论。提前感谢您的帮助,祝您早日愉快。:)

标签: phpajaxwordpressforms

解决方案


推荐阅读