Ciao ho un 'applicazione dove utilizzo il framework javamail per scaricare la posta, funziona tutto, la scarico, compreso gli allegati , però ho un problema legato alle mail multipart, in quanto non riesco a trovare un modo per separare bene il contenuto dai vari header , in modo da poter poi visualizzare solo il testo (indifferentemente dal fatto che sia html o altro).
Non vorrei mettermi a tirar fuori tutto con le espressioni regolari , ,mi sembra una soluzione un po 'ambigua'.

Riporto il codice scritto ...

codice:
 private void scaricaMessaggi() {
            String h = host;
            String u = myuser;
            String p = mypassword;
            try{
                Properties prop = System.getProperties();
                Session sessione = Session.getInstance(prop,null);
                Store store = sessione.getStore("pop3");
                store.connect(h,u,p);
                Folder fold = store.getDefaultFolder();
                if(fold != null){
                    fold = fold.getFolder("INBOX");
                    fold.open(Folder.READ_ONLY);
                    Message[] msg = fold.getMessages();
                    for(int i = 0; i < msg.length; i++){
                        Message messaggio = msg[i];
                        apriMessaggio(messaggio,i);
                        System.out.println("-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-");
                    }
                }
                else{
                    JOptionPane.showMessageDialog(null,"Folder non trovata !!!");
                }
            }
            catch(Exception e){
                JOptionPane.showMessageDialog(null,e.getMessage());
            }
        }       

    
    private void apriMessaggio(Message messaggio, int i) {
        Part part = messaggio;
        try {
            Object contenuto = part.getContent();
            if(contenuto instanceof Multipart){
                Multipart mpart = (Multipart)contenuto;
                System.out.println("MULTIPART-MAIL");
                System.out.println("MITTENTE : " + messaggio.getFrom()[0]);
                System.out.println("DATA : " + messaggio.getSentDate());
                System.out.println("OGGETTO : " + messaggio.getSubject());
                System.out.println("TESTO : ");
                for(int p = 0; p < mpart.getCount(); p++){
                    InputStream input = messaggio.getInputStream();
                    BufferedReader r = new BufferedReader(new InputStreamReader(input));
                    String line ;
                    while((line = r.readLine())!=null){
                        System.out.println(line);
                    }
                    part = mpart.getBodyPart(p);
                    String fname = part.getFileName();
                    String disposition = part.getDisposition();
                    if((fname!=null)&&(disposition!=null)){
                        FileOutputStream writer = new FileOutputStream("mail//"+fname);
                        byte[] buffer = new byte[4096];
                        InputStream in = part.getInputStream();
                        while(true) {
                           int readed = in.read( buffer );
                           if( readed == -1 ) {
                               break;
                           }
                           writer.write( buffer, 0, readed );
                           writer.close();
                        }
                        in.close();
                        System.out.println("Salvato il file " + fname );
                    }
                }
            }
            else{
                System.out.println("MAIL TESTO");
                System.out.println("MITTENTE : " + messaggio.getFrom()[0]);
                System.out.println("DATA : " + messaggio.getSentDate());
                System.out.println("OGGETTO : " + messaggio.getSubject());
                System.out.println("TESTO : ");
                InputStream input = messaggio.getInputStream();
                BufferedReader r = new BufferedReader(new InputStreamReader(input));
                String line ;
                while((line = r.readLine())!=null){
                    System.out.println(line);
                }
            }
        } catch (MessagingException ex) {
            JOptionPane.showMessageDialog(null,ex.getMessage());
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null,ex.getMessage());
        }
    }
Quacuno ha qualche idea in proposito ?