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 ?