IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Protocole IMAP - Gestion des mails


Sujet :

Java

  1. #1
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut Protocole IMAP - Gestion des mails
    Bonjour tout l'monde

    J'ai développé une API pour récupérer des mails situés dans la boîte de réception d'une messagerie.

    Tout se passe bien, mes mails sont bien récupérés. Leurs pièces jointes sont récup également et sont téléchargés dans des dossiers spécifiques. Une fois le mail traité il est mis à "Lu" et est placé dans le corbeille. Du moins en théorie.

    Actuellement, j'ai 3 processus qui s'enchainent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public void downloadFile(int num) {
     
            try {
                Multipart mp = (Multipart) myMailBox[num].getContent();
                int n = mp.getCount();
                for (int j = 0; j < n; j++) {
                    Part part = mp.getBodyPart(j);
                    String disposition = part.getDisposition();
                    if ((disposition != null) && ((disposition.equals(Part.ATTACHMENT) || (disposition.equals(Part.INLINE))))) {
                        String[] splitNomObjet = part.getFileName().split(";");
                        String[] splitDateObjet = splitNomObjet[3].split(" ");
                        String cheminDossierAgence = cnf.getProperty("repertoireXSL") + splitNomObjet[1] + "\\"
                                + cnf.getProperty("dossierXSL") + splitNomObjet[2] + "\\";
                        String cheminDossierAgenceAnnee = cheminDossierAgence + splitDateObjet[2] + "\\";
                        String cheminComplet = cheminDossierAgenceAnnee + getMonth(Integer.parseInt(splitDateObjet[1])) + "\\";
     
                        File dossierAgence = new File(cheminDossierAgence);
                        File dossierAgenceAnnee = new File(cheminDossierAgenceAnnee);
                        File dossierComplet = new File(cheminComplet);
     
                        if (!(dossierAgence.exists() && dossierAgence.isDirectory())) {
                            dossierAgence.mkdir();
                            dossierAgenceAnnee.mkdir();
                            dossierComplet.mkdir();
                        } else {
                            if (!(dossierAgenceAnnee.exists() && dossierAgenceAnnee.isDirectory())) {
                                dossierAgenceAnnee.mkdir();
                                dossierComplet.mkdir();
                            } else {
                                if (!(dossierComplet.exists() && dossierComplet.isDirectory())) {
                                    dossierComplet.mkdir();
                                }
                            }
                        }
                        File save;
                        if(splitNomObjet[0].indexOf("Journalier") != -1){
                            save = new File(cheminComplet + "Journalier-" + splitNomObjet[3] + ".xls");
                        }
                        else{
                            save = new File(cheminComplet + "Hebdo-" + splitNomObjet[3] + ".xls");
                        }
     
                        OutputStream ecriture = new FileOutputStream(save);
                        InputStream lecture = part.getInputStream();
                        byte[] buffer = new byte[1024];
                        int nbRead = lecture.read(buffer);
                        while (nbRead > 0) {
                            ecriture.write(buffer, 0, nbRead);
                            nbRead = lecture.read(buffer);
                        }
                        myMailBox[num].setFlag(Flags.Flag.SEEN, true);
                        lecture.close();
                        ecriture.close();
                    }
                }
            } catch (Exception ex) {
                log.error(ex.getMessage());
            }
        }
    Ensuite les mails sont déplacés dans la corbeille (en fait d'après la javadoc, il faut d'abord copier les mails, puis les supprimer d'inbox).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    public void copierMails(){
            try{
                //myMailBoxRead = new Message[nbMessageRead()];
                //myMailBoxRead
                myTrash = myFolder.getParent().getFolder(cnf.getProperty("poubelle"));
                myTrash.open(Folder.READ_WRITE);
                myFolder.copyMessages(myMailBox, myTrash); //Doit devenir myFolder.copyMessages(myMailBoxRead, myTrash); !!!!!!!!!!!!!!
            }
            catch(Exception ex){
                log.error(ex.getMessage());
            }
        }
     
        public void purgerMails(){
            try{
                myFolder.expunge();
                log.error("La boîte de réception a été purgée - Les mails traités ont été supprimés de l'INBOX et déplacés dans la Poubelle.");
            }
            catch(Exception e){
                log.error(e.getMessage());
            }
        }

    Je suppose qu'il faut que je créé une autre liste de message.
    J'aurai voulu faire dans le CopierMail un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myMailBoxRead = myFolder.getMessagesUnRead()
    mais il n'y a que la méthode getMessages() ...

  2. #2
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Je me suis dit que j'allais un peu retravailler ma procédure copierMails :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public void copierMails(){
            Cnf.setConfFile("TelephonieStat.properties");
            Cnf cnf = Cnf.getInstance();
            try{
                listeMailLu = new int[nbMessageRead()];
                remplissageListeMailsLus();
                myMailBoxRead = new Message[nbMessageRead()];
                myMailBoxRead = myFolder.getMessages(listeMailLu);
                myTrash = myFolder.getParent().getFolder(cnf.getProperty("poubelle"));
                myTrash.open(Folder.READ_WRITE);
                myFolder.copyMessages(myMailBox, myTrash);
            }
            catch(Exception ex){
                log.error(ex.getMessage());
            }
        }
     
        public void remplissageListeMailsLus(){
            int index = 0;
            try{
                for (int i = 0; i < listeMailLu.length; i++){
                if(isNew(i)){
                    listeMailLu[index] = i;
                    index ++;
                }
            }
            }
            catch(Exception e){
                log.error(e.getMessage());
            }
        }
    Je suppose que ça fonctionne comme ça. Qu'en pensez-vous ?

  3. #3
    Membre du Club
    Profil pro
    Développeur Java
    Inscrit en
    Octobre 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Octobre 2011
    Messages : 137
    Points : 56
    Points
    56
    Par défaut
    Développez.net, le site où même la réponse arrive d'elle-même en posant son problème à plat.
    Merci à toute l'équipe :p

    PS : je soupçonne que Chuck Norris soit dans les parages ou ait créé ce site

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 608
    Points
    21 608
    Par défaut
    Citation Envoyé par Baboulinet_ Voir le message
    Développez.net, le site où même la réponse arrive d'elle-même en posant son problème à plat.
    En fait, c'est toujours le cas partout et en tout : quand on pose son problème à plat, en général on en trouve la solution. Les cas où ça ne suffit pas, et où on a effectivement besoin d'aide, sont bien plus rares.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Exchange 2007] Gestion des mails qui ne trouvent pas de destinataire
    Par DomiM dans le forum Exchange Server
    Réponses: 4
    Dernier message: 15/03/2010, 20h59
  2. Gestion des Mails,
    Par Djohn dans le forum Outlook
    Réponses: 1
    Dernier message: 15/04/2008, 00h07
  3. gestion des mails
    Par yanis97 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 03/09/2007, 11h09
  4. Lancer l'application de gestion des mails
    Par Tenguryu dans le forum C++Builder
    Réponses: 8
    Dernier message: 07/05/2006, 21h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo