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

API standards et tierces Java Discussion :

[Javamail] Récupérer les pieces jointes


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 42
    Points
    42
    Par défaut [Javamail] Récupérer les pieces jointes
    Bonjour,

    Connaissez vous la procedure pour recuperer des pieces jointes avec le package Javamail ???

  2. #2
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par mrfirefunk
    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 :
    http://www.jscape.com/articles/retri...sing_java.html.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    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 ??

  4. #4
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Citation Envoyé par mrfirefunk
    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.
    Sinon, j'ai aussi trouvé ça : http://forum.java.sun.com/thread.jsp...318242&start=0.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    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 :
    Bad Base64 input character at 6: 44(decimal)
    Voici mon code source :

    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
     
    // 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) {}	
    }
    Je met en piece jointe le package Base64.

    Milles mercis
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    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 ?

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 43
    Points : 42
    Points
    42
    Par défaut
    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

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci infiniment enfin j arrive a télécharger les pièces jointes

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Quand j'essaie d'exécuter la portion du code suivante j'ai cet erreur:
    Bad Base64 input character at 5: 46(decimal)
    Quelqu'un peut m'aider ?

    Voici le code :
    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
    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();						
    					}

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    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.

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

Discussions similaires

  1. [Indy] Comment récupérer les pièces jointes d'un mail ?
    Par dj_lil dans le forum Web & réseau
    Réponses: 6
    Dernier message: 01/04/2011, 19h07
  2. récupérer les pièces jointes d'un mail [Outlook Express]
    Par chrisledeveloppeur2 dans le forum Delphi
    Réponses: 2
    Dernier message: 10/01/2007, 08h57
  3. les pieces jointe et php?
    Par hoaxpunk dans le forum Langage
    Réponses: 9
    Dernier message: 14/12/2005, 15h55
  4. [IMAP] distinguer les pieces jointes et les images inlines
    Par firejocker dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/11/2005, 13h11

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