Enregistrer Dossier + Envoyer un mail

Fermé
Nesil Messages postés 37 Date d'inscription mardi 21 juin 2022 Statut Membre Dernière intervention 1 juillet 2024 - 12 avril 2023 à 14:11
Nesil Messages postés 37 Date d'inscription mardi 21 juin 2022 Statut Membre Dernière intervention 1 juillet 2024 - 12 avril 2023 à 14:15

Bonjour,

Je suis sur une application qui permet à l'utilisateur de créer des dossiers de recompense en remplissant un formulaire. Jusqu'à maintenant, lorsque l'utilisateur valide son dossier, celui-ci est enregistrer et la fonction javascript nous renvoyait vers la page d'accueil. 

Hors maintenant j'aimerais que lorsque l'utilisateur valide son dossier, un mail soit envoyé vers un utilisateur qui ai saisie dans le formulaire et enregistrer en bdd (je le recupere justement grace à la bdd). Je me suis inspiré d'un bout de code d'envoie de mail dans mon application mais lorsque je valide mon dossier, celui-ci est juste enregistré et aucun envoi de mail ne se fait. J'aimerais savoir comment associer les 2 fonctions et surtout que mon envoi de mail fonctionne. 

Ci-joint ma fonction PHP enregistrerDossier() où j'ai rajouté en son sein l'envoi d'un mail :

function enregistrerDossier(){
        $date_dos = date("Y-m-d");
        $status = "00";
        $ipn_dos = $_SESSION['ipn2'];

        if($_POST['idDoss'] == 0){
            $type_dos = $_POST['type'];
            $nom_dos = $_POST['NomDemandeur'];
            if($type_dos == "TOPCOLLECTIF"){
                $type_dos = 'D';
            }else if($type_dos == "TOPDEPARTEMENT"){
                $type_dos = 'C';
            }else if($type_dos == "TOPATELIER"){
                $type_dos = "B";
            }else if($type_dos == "TOPUET"){
                $type_dos = "A";
            }
        }
        $telDemandeur = $_POST['telDemandeur'];
        $depDemandeur = $_POST['depDemandeur'];
        $nom_can = $_POST['nomCollab'];
        $prenom_can = $_POST['prenomCollab'];
        $matricule_can = $_POST['matriculeCollab'];
        $depCollab = $_POST['depCollab'];
        $motif_dos = $_POST['motifDemandeur'];
        $cadeau = $_POST['idCadeau'];

        $nomPrenom_can = $nom_can." ".$prenom_can;

        $result = "";

        $dbcontroller = new DBController();
        //Si on veut ajouter chefDep dans la table 'dossiers' il faut créer la colonne en bdd + Faire les changements ici
        if($_POST['idDoss'] == 0){
            $stmt1 = mysqli_prepare($dbcontroller->getConn(), "INSERT INTO dossiers (status, ipn_dos, nom_dos, tel_dos, dep_dos, type_dos, nom_can, matricule_can, motif_dos, dep_can, kdo_code) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
            mysqli_stmt_bind_param($stmt1, 'sssssssssss', $status, $ipn_dos, $nom_dos, $telDemandeur, $depDemandeur, $type_dos, $nomPrenom_can, $matricule_can, $motif_dos, $depCollab, $cadeau);
            $data1 = $dbcontroller->executeQueryMSQL($stmt1);
        }else{
            $stmt1 = mysqli_prepare($dbcontroller->getConn(), "UPDATE dossiers SET date_dos = ?,dep_dos = ?, tel_dos = ?, nom_can = ?, matricule_can = ?,  motif_dos = ?, dep_can = ?, kdo_code = ? WHERE id_rec = ?");
            mysqli_stmt_bind_param($stmt1, 'ssssssssi', $date_dos, $depDemandeur, $telDemandeur, $nomPrenom_can, $matricule_can, $motif_dos, $depCollab, $cadeau, $_POST['idDoss']);
            $data1 = $dbcontroller->executeQueryMSQL($stmt1);
        }
        

        /*
        Recupère les infos : IPN du demandeur(ipn_dos)/ Nom Candidat(nom_can)/ Nom demandeur(nom_dos)/ le departement du demandeur(dep_dos)
        En fonction de l'id du dossier séléctionné pour passer à la prochaine étape
        */
        $stmt2 = mysqli_prepare($dbcontroller->getConn(), "SELECT ipn_dos, nom_can, nom_dos, dep_dos FROM dossiers INNER JOIN users ON users.dpt = dep_dos  WHERE id_rec = ?");
        mysqli_stmt_bind_param($stmt2, 's', $id);
        $data2 = $dbcontroller->executeSelectQueryMSQL($stmt2);

        $stmt3 = mysqli_prepare($dbcontroller->getConn(), "SELECT ipn FROM users INNER JOIN dossiers ON dep_dos = users.dpt WHERE level = 50 AND id_rec = ?");
        mysqli_stmt_bind_param($stmt3, 's', $id);
        $data3 = $dbcontroller->executeSelectQueryMSQL($stmt3);

        $dbcontroller->closeQuerySQL();

        // $chefD = $data3[0]['ipn']."@renault.com";
        $AdresseMail = $data2[0]['ipn_dos']."@renault.com" ;//adresse mail du demandeur
        $can = $data2[0]['nom_can'];//Nom Candidat
        $nom_dos = $data2[0]['nom_dos'];//Nom Demandeur
        $ipn_dos = $data2[0]['ipn_dos'];//IPN Demandeur

        if ($data1) {
            $result = "Opération effectuée avec succès";
            foreach($data3 as $chefD){
                $this->mail0($chefD['ipn']."@renault.com",$data2[0]['nom_dos'], $can, $nom_dos, $ipn_dos);
            }
        } else {
            $result = "Erreur : résultat vide.";
        }

        return $result;
    }

Voici le javascript associé : 

function EnregistrerDossier(){
   
    var idDoss = $('#idDoss').html();
    if(idDoss == undefined){
        idDoss = 0;
    }
    var NomDemandeur = $('#nomRedac').html();
    var depDemandeur = $('#depRedac').val();
    // var chefDep = $('#chefDep').html();
    var telDemandeur = $('#telRedac').val();
    var nomCollab = $('#nom').val();
    var prenomCollab = $('#prenom').val();
    var matriculeCollab = $('#matricule').val();
    var depCollab = $('#dep').val();
    var motifDemandeur = $('#motif').val(); //.val?
    var type = $('#type').html();
    var idCadeau = $('#choisi').find('span').attr('id');

    $.ajax({
        cache:false,
        url: "data/enregistrerDossier",
        type: "POST",
        async: false,
        data: ({
            idDoss: idDoss,
            NomDemandeur: NomDemandeur,
            depDemandeur: depDemandeur,
            // chefDep: chefDep,
            telDemandeur: telDemandeur,
            nomCollab: nomCollab,
            prenomCollab: prenomCollab,
            matriculeCollab: matriculeCollab,
            depCollab: depCollab,
            motifDemandeur: motifDemandeur,
            type: type,
            idCadeau: idCadeau
        }),
        success:function(response, status) {
            //console.dir(response);
            accueil();
        },
        error:function(response, status) {
        }
    });
}

et voici la fonction mail0 () en PHP qui initialise les paramètre du mail : 

function mail0($chefD, $demandeur, $can, $nom_dos, $ipn_dos){
        $text = 'Hola, une nouvelle demande de passeport a été effectuée dans votre département.
        Pour consulter et valider la demande, rendez-vous sur :  http://sdl-workflowhd.dok-lem.intra.renault.fr';

        // Sujet
        $subject = 'WKFRHD : Validation de passeport';
        $headersfrom = '';
        $headersfrom .= 'From: ***@*** '. "\n";
        $headersfrom .= 'MIME-Version: 1.0' . "\n";
        $headersfrom .= 'Content-type: text/html; charset=utf-8' . "\n";

        // message
        $message = $this->utf8_ansi('
        <html>
        <head>
        <title>Information : </title>
        </head>
        <body>
        '.$text.
        '<br/>'.
        '<br/> IPN demandeur : ' .$ipn_dos.
        '<br/> Demandeur : ' .$nom_dos.
        '<br/> Candidat : '.$can.

        '</body>
        </html>
        ');

        // Envoi
        mail($chefD, $subject, $message, $headersfrom);
    }

Merci du temps que vous m'accorderez


Windows / Chrome 111.0.0.0

A voir également:

1 réponse

Nesil Messages postés 37 Date d'inscription mardi 21 juin 2022 Statut Membre Dernière intervention 1 juillet 2024
12 avril 2023 à 14:15

SI cela peut aider, je met juste ici les fonctions contenant l'envoi de mail qui elles, fonctionnent.

Ci-joint la fonction PHP updateEtapeDossier():

function updateEtapeDossier(){
        $id = $_POST['id'];
        $etapeSuivante = $_POST['etapeSuivante'];
        $result = "";
        $dbcontroller = new DBController();

        $date = date("Y-m-d");
        $where = "";
        if($etapeSuivante == "02"){
            $where = ", date_recep = '".$date."'";
        }else if($etapeSuivante == "03"){
            $where = ", date_trait = '".$date."'";
        }else if($etapeSuivante == "04"){
            $where = ", date_remise = '".$date."'";
        }

        /*
        Met à jour une ligne de la table dossiers dans la bdd, 
        En fonction de l'id du dossier séléctionné et de l'étape suivante également reçue en POST.
        
            Met à jour la colonne status En fonction de l'ID du dossier.
        
        La variable $where est utilisée pour ajouter une mise à jour pour les colonnes de date (date_recep, date_trait, date_remise) 
        En fonction de l'étape suivante.
        */
        $req =  'UPDATE dossiers SET status = "'.$etapeSuivante. '" '.$where.' WHERE id_rec = '.$id;
        $stmt1 = mysqli_prepare($dbcontroller->getConn(), $req);
        $data1 = $dbcontroller->executeQueryMSQL($stmt1);
        /*
        Recupère les infos : IPN du demandeur(ipn_dos)/ Nom Candidat(nom_can)/ Nom demandeur(nom_dos)/ le departement du demandeur(dep_dos)
        En fonction de l'id du dossier séléctionné pour passer à la prochaine étape
        */
        $stmt2 = mysqli_prepare($dbcontroller->getConn(), "SELECT ipn_dos, nom_can, nom_dos, dep_dos FROM dossiers INNER JOIN users ON users.dpt = dep_dos  WHERE id_rec = ?");
        mysqli_stmt_bind_param($stmt2, 's', $id);
        $data2 = $dbcontroller->executeSelectQueryMSQL($stmt2);

        $stmt3 = mysqli_prepare($dbcontroller->getConn(), "SELECT ipn FROM users WHERE level != 50");
        $data3 = $dbcontroller->executeSelectQueryMSQL($stmt3);

        $dbcontroller->closeQuerySQL();
        //On peut envoyer un mail à qqn en faisant "***@***" !!!
        $AdresseMail = $data2[0]['ipn_dos']."@renault.com" ;//adresse mail du demandeur
        $can = $data2[0]['nom_can'];//Nom Candidat
        $nom_dos = $data2[0]['nom_dos'];//Nom Demandeur
        $ipn_dos = $data2[0]['ipn_dos'];//IPN Demandeur

        if ($data1) {
            $result = "Opération effectuée avec succès";
            if($etapeSuivante == "01"){
                foreach($data3 as $admin){
                    $this->mail($admin['ipn']."@renault.com", $data2[0]['nom_dos'], $can, $nom_dos, $ipn_dos);
                }
            }else if($etapeSuivante == "02"){
                $this->mail1($AdresseMail, $can, $nom_dos, $ipn_dos);
            }else if($etapeSuivante == "03"){
                $this->mail2($AdresseMail, $can, $nom_dos, $ipn_dos);
            }else if($etapeSuivante == "04"){
                $this->mail3($AdresseMail, $can, $nom_dos, $ipn_dos);
            }
        } else {
            $result = "Erreur : résultat vide.";
        }

        return $result;
    }

et sa fonction javascript associée:

function etapeSuivante(ele){
    var etapeSuivante = "";
    etapeSuivante = parseInt(ele.id);
    etapeSuivante = etapeSuivante + 1;
    etapeSuivante = "0"+etapeSuivante;
    var idDoss = $(ele).parent().parent().attr('id');
    $.ajax({
        cache:false,
        url: "data/updateEtapeDossier",
        type: "POST",
        async: false,
        data: ({
            id: idDoss,
            etapeSuivante: etapeSuivante
        }),
        success:function(response, status) {
            //console.log(response);
            $('#afficherInfo').html("");
            $('#afficherInfo').html(response);
            var el = $("#afficherInfo");
            newone = el.clone(true);
            el.before(newone);
            $("." + el.attr("class") + ":last").remove();
            $("#afficherInfo").addClass("Notif");
            el.remove();
            afficherDossiers();
        },
        error:function(response, status) {
        }
    });
}

et voila la fonction mail() en PHP associée: 

function mail($admin, $demandeur, $can, $nom_dos, $ipn_dos){
        $text = $this->recupereMessageMail(1);

        // Sujet
        $subject = 'WKFRHD : demande de passeport';
        $headersfrom = '';
        $headersfrom .= 'From: ***@*** '. "\n";
        $headersfrom .= 'MIME-Version: 1.0' . "\n";
        $headersfrom .= 'Content-type: text/html; charset=utf-8' . "\n";

        // message
        $message = $this->utf8_ansi('
        <html>
         <head>
           <title>Information : </title>
         </head>
         <body>
         '.$text.
         '<br/>'.
         '<br/> IPN demandeur : ' .$ipn_dos.
         '<br/> Demandeur : ' .$nom_dos.
         '<br/> Candidat : '.$can.

         '</body>
        </html>
        ');

        // Envoi
        mail($admin, $subject, $message, $headersfrom);
    }
0