Bonjour,
Connaissez vous la procedure pour recuperer des pieces jointes avec le package Javamail ???
Version imprimable
Bonjour,
Connaissez vous la procedure pour recuperer des pieces jointes avec le package Javamail ???
Voici un lien présentant un code Java permettant de récupérer des e-mails avec pièce(s) jointe(s) via le protocole POP3 grâce à JavaMail :Citation:
Envoyé par mrfirefunk
http://www.jscape.com/articles/retri...sing_java.html.
Le probleme c'est que pour utiliser ce code et en exploiter pleinement les fonctionnalités il faut acheter leur package.
Ya pas un moyen gratuits de faire cela ??
Désolé, j'avais pas vu que c'était payant.Citation:
Envoyé par mrfirefunk
Sinon, j'ai aussi trouvé ça : http://forum.java.sun.com/thread.jsp...318242&start=0.
Merci beaucoup pour ce coup de pouce.
J'ai encore un petit souci.
Ce morceau de code fait appel a une classe Base64 qui fait partit du package payant jscape. Cependant j'ai reussi a trouver une version gratuite de la classe Base64.
Mon probleme est lorsque j'utilise cette classe lors de l'execution j'ai l'erreur suivante :Voici mon code source :Citation:
Bad Base64 input character at 6: 44(decimal)
Je met en piece jointe le package Base64.Code:
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 // Permet de recuperer les pieces jointes public void getObjectToMessage(int indice, String dossier) { try { // on recupere les messages dans un tableau Message message[] = myFolder.getMessages(); ArrayList al = new ArrayList(); Multipart mp = null; File tempFile = null; FileOutputStream fos = null; String fileName = null; byte[] decrypt = null; if (!new File (dossier).exists()) { System.out.println("Directory Does Not Exist: "+ dossier); } else System.out.println("Directory Does Exist: "+ dossier); mp = (MimeMultipart) message[indice].getContent(); for (int j = 0, m = mp.getCount(); j < m; j++) { System.out.println("on est rentré dans la boucle des pieces jointes"); Part part = mp.getBodyPart(j); fileName = part.getFileName(); if (fileName == null) { fileName = ""; fileName = "temp" + j; } tempFile = new File(dossier + fileName); fos = new FileOutputStream(tempFile); part.removeHeader("Content-Type"); part.removeHeader("Content-Transfer-Encoding"); part.removeHeader("Content-Disposition"); decrypt = Base64.decode(((String)part.getContent())); fos.write(decrypt); fos.close(); al.add(dossier + fileName); } } catch(java.lang.Throwable msg) {} }
Milles mercis ;)
Je me demande si le problème ne vient pas de l'instruction ci-dessous :
Celle-ci te retourne-t'elle bien le contenu de la pièce jointe encodé en base 64 ?Code:part.getContent()
Autant pour moi !!!!
Il s'avère que le code que j'utilise fonctionne trés bien. Mon fichier en pièce jointe était tout simplement corrompu.
Mon probleme est résolu, merci beaucoup :D
Merci infiniment enfin j arrive a télécharger les pièces jointes
Quand j'essaie d'exécuter la portion du code suivante j'ai cet erreur:
Quelqu'un peut m'aider ?Citation:
Bad Base64 input character at 5: 46(decimal)
Voici le code :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 if (BodyPart.ATTACHMENT.equalsIgnoreCase(disposition)) { File tempFile = null; FileOutputStream fos = null; byte[] decrypt = null; String folderr = "C:\\Users\\ADIL\\Desktop\\Att\\"; tempFile = new File(folderr + b.getFileName()); System.out.println(tempFile); fos = new FileOutputStream(tempFile); b.removeHeader("Content-Type"); b.removeHeader("Content-Transfer-Encoding"); b.removeHeader("Content-Disposition"); decrypt = Base64.decode(b.getContent().toString()); System.out.println(decrypt); fos.write(decrypt); fos.close(); }
Ben, apparemment ton code suppose que b est un attachement encodé en base64, et il se trouve que b est un attachement qui n'est pas encodé en base64.
Il faudrait vérifier si le header "Content-Transfer-Encoding" indique bien "base64", avant d'essayer de décoder en base64.