Demo entry 6361717

Traitement Mail

   

Submitted by anonymous on May 05, 2017 at 09:28
Language: PHP. Code size: 10.7 kB.

<?php

/** IDENTIFIANT DU MAIL
  Concatenation des variables précédentes dans une variable unique : mbox
  DISABLE_AUTHENTICATOR = Désactive les propriétés d'authentification
  $mbox = concatenation des paramétres de la boite mail
 */
/* GLOSSAIRES DES VARIABLES
 * $folderMailExist     : Vérifie si le dossier Web-autre-mail existe ou non dans le fichier LCM
 * $numberOfMessage     : Assigne le nombre de message présent dans la boite de réception 
 * $searchPj            : 
 * $fromAddress         : Affecte la dernière adresse mail expéditeur présente dans la boite de reception 
 * $infoFileLcm         : Affecte les informations de la ligne concernée par $fromAddress 
 * $nameProvider        : Récupere le nom par rapport aux info donnée par $infoFileLCM 
 * $numberElement       : Nombre d'élément contenu dans le message 
 * $extension           : Récupere l'extension de $numberElement 
 * $fileMove??????      : Déplace le mail dans le dossier correspndant
 *  */

/* GLOSSAIRES DES FONCTIONS
 * connexion            getMessage          moveFileDD
 * getAttachment        saveFileDD          
 * getAdressMail        moveFileMail        
 * makeFolder           sendMail            
 * createFolder         NumberOfColumn      
 *  */

echo PHP_EOL;
include "Constante.php";
include "Fonctions.php";
include "ListCorrespMail.php";
include 'Classes/PHPExcel.php';
include 'Classes/PHPExcel/Writer/Excel5.php';

require_once "Classes/PHPExcel/IOFactory.php";
echo PHP_EOL;

//** ***** Variables prérequises ******************************************** */

system("clear");
system("clear");
/** Connexion à Docker */
$mbox = connexion();
/* Nombre de mail contenu dans la boite de réception */
$numberOfMessage = imap_num_msg($mbox);
if ($numberOfMessage === 0) {
    echo PHP_EOL . PHP_EOL . PHP_EOL . "          <------  AUCUN MAIL DANS LA BOITE DE RECEPTION  ------>" . PHP_EOL . PHP_EOL . PHP_EOL . PHP_EOL;
    die();
}

/* Adresse mail exaegis pour l'envoi de message */
$addressHome = "envoife@exaegis.com";

/* Création du dossier WEB-AUTRE-MAIL S'il n'existe pas il le crée */
$folderMailOther = imap_getmailboxes($mbox, SERVERCONN, FOLDERMAIL);
if ($folderMailOther == false) {
    imap_create($mbox, SERVERCONN . FOLDERMAIL);
}
/* Création du dossier ENVOI-FE. S'il n'existe pas il le crée */
$folderMailSend = imap_getmailboxes($mbox, SERVERCONN, FOLDERENVOI);
if ($folderMailSend == false) {
    imap_create($mbox, SERVERCONN . FOLDERENVOI);
}
/* * ************************************************************************ */


/* * ************************************************************************ */
/* Compteur permettant d'afficher le numéro du mail et d'affecter aux variables 
 * $searchPj    = la pièce jointe
 * $fromAddress = l'adresse du mail */
/* * ************************************************************************ */
for ($counter = 1; $counter <= $numberOfMessage; $counter++) {
    echo PHP_EOL . PHP_EOL . PHP_EOL . " **************  MAIL NUMERO : $counter  **************" . PHP_EOL;
    $searchPj = getAttachment($mbox, 1);
    $fromAddress = getAdressMail($mbox, 1);
    echo " Expéditeur                            ------> $fromAddress" . PHP_EOL;

    /* echo " Information provenant du fichier LCM " . PHP_EOL; */
    $lcm = new ListCorrespMail();
    $infoFileLcm = $lcm->getline($fromAddress);

    /* ---- Information provenant du fichier LCM par rapport au mail traité ---- */
    if (count($infoFileLcm) != 0) {
        $nameProv1 = $infoFileLcm['nmpre'];
        $expectedPart = $infoFileLcm['nbfic'];
        $expectedColumn = $infoFileLcm['colat'];
        $hearderLine = $infoFileLcm['liget'];

        setlocale(LC_ALL, 'fr_FR');
        $nameProvider = replaceSpecialCharacter($nameProv1);

        echo " Nom du prestataire à créer            ------> $nameProvider" . PHP_EOL;
        makeFolder($mbox, $nameProvider);

        /* ---- Recherche de pièce jointe ---- */
        $header = imap_headerinfo($mbox, 1);
        $from = $header->from;

        /* ---- Récupération du nombre de pièce jointe ---- */
        $numberElement = count($searchPj);
        echo " Pièces jointes attendues              ------> $expectedPart" . PHP_EOL;
        echo " Pièces jointes dans le mail           ------> $numberElement" . PHP_EOL . PHP_EOL;

        for ($i = 0; $i < count($searchPj); $i++) {
            $message_detail = $searchPj[$i];

            /* ---- Création, sur le serveur, de dossiers et sous-dossiers avec le nom du pestaire ---- */
            createFolder($nameProvider, FOLDERATREAT);
            createFolder($nameProvider, FOLDERWOTHER);
            createFolder($nameProvider, FOLDERWOK);

            /* ---- Récupération de détail du message ---- */
            $message = getMessage($mbox, 1, $message_detail);

            /* ---- Renommage et sauvegarde du fichier sur le serveur ---- */
            $saveFile = saveFileDD($message_detail, $nameProvider, $message);
            $searchPj[$i]["saveFile"] = $saveFile;
        }

//** ***** Extraction de l'extension d'une pièce jointe ********************* */
        if ($numberElement != 0) {
            $moveFolder = "";

            for ($i = 0; $i < count($searchPj); $i++) {
                $message_detail = $searchPj[$i];

                $extension = pathinfo($message_detail[NAMEFILE], PATHINFO_EXTENSION);
                $saveFile = $message_detail["saveFile"];
                /* Recherche de l'extention du fichier si elle est parmi la liste ci dessous
                 * Possibilité de rajouter une extension sans changer le code entier */
                if ($extension === "csv" || $extension === "xlsx" || $extension === "xls") {
                    echo " \n Extension en cours d'exécution        ------> " . strtoupper($extension) . PHP_EOL;
                    $moveFolder = FOLDEROK;

                    $saveFilePath = PATHBASE . FOLDERPATH . "/" . $nameProvider . "/";
                    echo " Fichier sauvegardé dans               ------> $saveFilePath" . PHP_EOL;

//** ***** Comparaison du nombre de colonne avec le fichier LCM ************* */
//** ***** Recherche d'un mot dans un fichier XLS *************************** */

                    $NumberColumnFile = NumberOfColumn($nameProvider, $saveFile, $hearderLine);
                    //var_dump($NumberColumnFile);

                    /* ---- Vérification de la présence du mot 'WORD' dans les fichiers XLS, XLSX et CSV ---- */
                    if ($extension == "xls" || $extension == "xlsx") {
                        $valueFindWord = findWordXls($hearderLine, FINDWORD, $nameProvider, $saveFile);
                    } else {
                        $valueFindWord = findWordCsv($hearderLine, FINDWORD, $nameProvider, $saveFile);
                    }

                    if ($expectedColumn != $NumberColumnFile || $valueFindWord != true) {
                        echo " ****** ERREUR NOMBRE DE COLONNE       ******  LCM = $expectedColumn / Fichier = $NumberColumnFile" . PHP_EOL;
                        $messageError = " Le nombre de colonne du fichier " . strtoupper($extension) . " provenant de $fromAddress n'est pas correct";
                        sendMail($addressHome, "erreur@exaegis.com", "Erreur de colonne", $messageError);

                        /* Sauvegarde du fichier dans le dossier Web-autre du serveur */
                        moveFileDD($nameProvider, $saveFile, FOLDERWOTHER);
                    } else {
                        /* Sauvegarde du fichier dans le dossier Web-a-traiter du serveur */
                        echo " Nombre de colonne                     ------> OK" . PHP_EOL;
                        moveFileDD($nameProvider, $saveFile, FOLDERATREAT);
                    }
                    
//** ***** Gestion d'erreur de pièce jointe ********************************* 
//les pièces ont pour extension soit DOC DOCx ODS */
                } else {
                    echo " ****** ERREUR EXTENSION               ******  Fichier " . strtoupper($extension) . PHP_EOL;
                    if (empty($moveFolder)) {
                        $moveFolder = FOLDERAUTRE;
                    }

                    $messageError = " l'extension " . strtoupper($extension) . " contenu dans le mail $fromAddress n'est pas correct.\n"
                            . " Veuillez transmettre des fichiers au format suivant : \n"
                            . "   - XLS  \n "
                            . "  - XLSX \n "
                            . "  - CSV  \n ";
                    sendMail($addressHome, $fromAddress, "Erreur extension de pièce(s) jointe(s)", $messageError);

                    /* Sauvegarde du fichier dans le dossier Web-autre du serveur */
                    moveFileDD($nameProvider, $saveFile, FOLDERWOTHER);
                }
            }

            /* Déplacement du (des) fichier(s) dans le dossier Web-ok OU Web-autre OU Web-echec
             * suivant la variable $moveFolder */
            if (empty($moveFolder)) {
                $moveFolder = FOLDERECHEC;
            }
            $fileMoved = FOLDERENVOI . "." . $nameProvider . $moveFolder;
            moveFileMail($mbox, $fileMoved, 1);
            echo " Déplacement du mail dans le dossier   ------> $fileMoved \n";


//** ***** Gestion de pièce jointe non fournie ****************************** */ 
//** Si aucun fichier est contenu dans le mail, il est déplcacé dans un dossier web-echec */
//** et envoi d'un mail notifiant l'absence de pièce jointe au prestataire et exaegis */
        } else {
            $fileMovedOther = FOLDERENVOI . "." . $nameProvider . FOLDERECHEC;
            moveFileMail($mbox, $fileMovedOther, 1);
            echo " Fichier déplacé dans                   ------> $fileMovedOther" . PHP_EOL;
            $messageError = " Aucunes pièces jointes dans le mail";
            sendMail($addressHome, $fromAddress, " Manque les PJ", $messageError);
        }

//** ***** Gestion email inconnu dans le fichier LCM **************************/
    } else {
        $fileMovedMail = FOLDERMAIL;
        echo " \n ****** ERREUR MAIL INCONNU            ******  Envoi mail" . PHP_EOL;
        echo " Dossier déplacement du mail           ------> $fileMovedMail" . PHP_EOL;
        moveFileMail($mbox, $fileMovedMail, 1);
    }

    /* Efface les messages marqués par imap_mail_move */
    imap_expunge($mbox);

    //exit();
}
/* * ************************************************************************ */

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).