Probleme avec imap_sort - Tri des email du plus vieux au plus récent...

Signaler
Messages postés
8
Date d'inscription
lundi 5 mars 2012
Statut
Membre
Dernière intervention
17 juillet 2012
-
Bonjour à tous en espérant que quelqu'un aperçoive cette bouteille jetée dans la toile
Voilà, je suis en train de construire un tout petit webmail pour une application et j'aimerai pouvoir trier mes emails dans le sens inverse chronologiquement...
C.A.D du plus récent au moins récent. Ce que ne fait pas imap_open
Je sais qu'il existe la fonction imap_sort() que j'ai consulté sur le manuel PHP mais que je n'arrive pas à l'utiliser...

Il y a peu de sujet la-dessus ...
MERCI pour votre aide


Voici le code (trouvé sur phpcs) et modifié, ça fonctionne top (uniquement pour les messages text et pas les PJ... pour le moment... on verra ça aprés...) ;

<?php
    function get_mime_type(&$structure)
    {
    $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER");
    if($structure->subtype) {
    return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype;
    }
    return "TEXT/PLAIN";
    }
    function get_part($stream, $msg_number, $mime_type, $structure false,$part_number false)
    {
    // CETTE FONCTION PERMET DE RECUPERER UNIQUEMENT LE TEXTE DU MAIL (PAS LES PIECES JOINTES)
    if(!$structure) {
    $structure = imap_fetchstructure($stream, $msg_number);
    }
    if($structure) {
    if($mime_type == get_mime_type($structure)) {
    if(!$part_number) {
    $part_number = "1";
    }
    $text = imap_fetchbody($stream, $msg_number, $part_number);
    if($structure->encoding == 3) {
    return imap_base64($text);
    } else if($structure->encoding == 4) {
    return imap_qprint($text);
    } else {
    return $text;
    }
    }
    if($structure->type == 1) /* multipart */ {
    while(list($index, $sub_structure) = each($structure->parts)) {
    if($part_number) {
    $prefix = $part_number . '.';
    }
    $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1));
    if($data) {
    return $data;
    }
    } // END WHILE
    } // END MULTIPART
    } // END STRUTURE
    return false;
    } // END FUNCTION

$mbox = imap_open("{".$serveur_entrant.$port.$protocole."}", $identifiant, $mot_de_passe); // CONNEXION AU SERVEUR POP 
    $headers = imap_headers ($mbox); // RECUPERATION DES ENTETES
    if ($headers == false) {
    echo "Pas de nouveaux Mails !\n"; // PAS DE MAILS :-(
    } else {
    while (list ($key,$val) = each ($headers)) { // ON PASSE TOUS LES MAILS EN REVUE
    $header = imap_headerinfo($mbox, $key+1, 100, 100);
    $dateMail = date("d/m/Y - G:i", $header->udate);
    $from = $header->from;
    $objetMail = $header->fetchsubject;
    $objetMail = imap_utf8($objetMail);  //PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    //$objetMail = utf8_decode($objetMail);   PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $emailExp = $from[0]->mailbox."@".$from[0]->host.")";
$entetes = $from[0]->personal. " ("; 
$entetes = imap_utf8($entetes);  //PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $corpsMail = get_part ($mbox, $key+1, "TEXT/PLAIN");
// Autre écriture (avec encode) PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues
    $corpsMail = utf8_encode(imap_utf8($corpsMail));
    // Retour à la ligne
$corpsMail = nl2br(htmlspecialchars(strip_tags($corpsMail)));
    $idtMail= $key+1;
?>
A voir également: