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

Struts 1 Java Discussion :

Lire un fichier outlook (.msg) avec l'API msgparser


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 116
    Par défaut Lire un fichier outlook (.msg) avec l'API msgparser
    Bonjour tous le monde,

    J’ai stocké un mail outlook .msg dans ma base de donnée en type Blob.

    J’utilise le struts 1.3 et spring 2 comme technologie.

    Je veux lorsque je clique sur le bouton ‘affiche mail’, le mail sera affiché dans mon browser (IE).

    J’ai utilisé l’api msgparser il affiche très bien le message mais les images ne s’affiche pas exemple en pièce jointe :


    Voici le code utilisé :
    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
     
                        MsgParser msgp = new MsgParser();
                        Message msg = msgp.parseMsg(img_data.getBinaryStream());
     
                        OutputStream output = response.getOutputStream();
     
                        String from = "DE : " + msg.getFromEmail();
                        String to = "A : " + msg.getDisplayTo();
                        String cc = "Cc : " + msg.getDisplayCc();
                        String objet = "Objet : " + msg.getSubject();
     
                        //response.setContentType("application/octet-stream");
                        List<Attachment> atts = msg.getAttachments();
                        for (int i = 0; i < atts.size(); i++) {
                               FileAttachment file = (FileAttachment) atts.get(i);
                               System.out.println("file : "[ATTACH=CONFIG]166035[/ATTACH]
                                            + file.getLongFilename()
                                            + " type is : "
                                            + new MimetypesFileTypeMap().getContentType(file
                                                          .getLongFilename()));
                               //response.addHeader("Content-Disposition", "inline; filename=" + file.getLongFilename());
                               byte[] date = file.getData();
                        //     BufferedImage bImageFromConvert = ImageIO
                        //                  .read(new ByteArrayInputStream(date));
                        //     ImageIO.write(bImageFromConvert, file.getExtension(), output);
                               System.out.println("date " + i + " : is :" + date.length);
                        //     output.write(date);
                        }
                        System.out.println("converted html is : "
                                      + msg.getConvertedBodyHTML());
                        output.write(from.getBytes());
                        output.write("<BR>".getBytes());
                        output.write(to.getBytes());
                        output.write("<BR>".getBytes());
                        output.write(cc.getBytes());
                        output.write("<BR>".getBytes());
                        output.write(objet.getBytes());
                        output.write("<BR>".getBytes());
                        output.write("<BR>".getBytes());
                        output.write(msg.getConvertedBodyHTML().getBytes());
                        output.flush();
                        output.close();
    Merci pour votre réponse.

    Cordialement,
    Seoud Ala Eddine

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    A priori, je pense que les images sont sous forme de pièces jointes, qui sont référencées dans le html sous cette forme : src='cid:TRUC', ou TRUC est un identifiant de pièce jointe (que tu devrais pouvoir récupérer sur FileAttachement avec getCid() à priori). Il faut donc adapter le html du message pour qu'il affiche ces images. Soit, tu stockes temporairement les images dans un dossier du serveur et tu mets les urls correspondantes dans l'attribut src (donc tu parses le html avec jsoup par exemple, et tu le parcours (ou tu te fais ça avec une expression régulière), à moins qu'il y ait une méthode toute faite de l'API (que je connais pas) qui le fait). Soit, tu les embarques dans le html (mais ça peut faire un très gros stream et donc ralentir l'affichage, selon la taille des images : pour embarquer une image, il faut encoder le flux binaire en base 64, puis le mettre dans le l'attribut source, précédé de "data:<mimetype>;base64," (sans les guillemets) ou <mimetype> est le mimetype du fichier (par exemple, image/png).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 116
    Par défaut
    Bonjour Joel,

    Merci beaucoup pour votre réponse.

    Oui les images se sont des pièces jointes que je peux les récupérer en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    List<Attachment> atts = msg.getAttachments();
         for (int i = 0; i < atts.size(); i++) {
                    FileAttachment file = (FileAttachment) atts.get(i);
                    byte[] date = file.getData();
    }
    la forme des images est la suivante : src="cid:image002.png@01D02E52.029883D0"

    j'utilise la méthode getData() pour récupérer les images au lieu de la méthode getCid() qui n'existe pas.

    est-ce-que je peux stocker les images dans le header en utilisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.addHeader("Content-Disposition", "inline; filename=" + file.getLongFilename());
    au lieu de stocker temporairement dans le serveur ?

    est-ce-que il existe une autre API java plus performent de celle-ci (j'ai utilisé poi apache mais il affiche le texte seulement sans le style de mail(plus pire que msgparser))?

    Merci Beaucoup.

    Cordialement,
    Seoud Ala Eddine

Discussions similaires

  1. impossible de lire les fichiers outlook .msg
    Par paolo2002 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/12/2010, 13h37
  2. manipuler fichier excel 2003 avec l'api jxl ?
    Par hoor3in dans le forum Documents
    Réponses: 2
    Dernier message: 30/04/2008, 13h16
  3. Lire un fichier outlook .pst
    Par archonte dans le forum Web & réseau
    Réponses: 18
    Dernier message: 19/07/2007, 15h46
  4. Lire un fichier d'entier avec SDL en C
    Par gsaly dans le forum SDL
    Réponses: 15
    Dernier message: 07/05/2007, 20h41
  5. Réponses: 1
    Dernier message: 02/05/2007, 09h22

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