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.
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
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()); } }
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 :
mais il n'y a que la méthode getMessages() ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part myMailBoxRead = myFolder.getMessagesUnRead()
Partager