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 ...
Quacuno ha qualche idea in proposito ?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()); } }
![]()

,mi sembra una soluzione un po 'ambigua'.
Rispondi quotando