PDA

View Full Version : [java] javamail e listener


gaglioppo
25-02-2006, 15:37
ciao amici,

sono riuscito a costruire un tool per ricevere e inviare email.
Sto usando java mail.

Il sistema mi serve per monitorare automaticamente la casella della posta.

Ho trovato su internet il seguente listener che si attacca al folder:

folder.addMessageCountListener(new MessageCountAdapter() {
public void messagesAdded(MessageCountEvent ev) {
Message[] msgs = ev.getMessages();
System.out.println("Ci sono " + msgs.length + " nuovi messaggi");
// Just dump out the new messages
for (int i = 0; i < msgs.length; i++) {
try {
DataHandler dh = msgs[i].getDataHandler();
InputStream is = dh.getInputStream();
int c;
while ((c = is.read()) != -1)
System.out.write(c);
} catch (IOException ioex) {
ioex.printStackTrace();
} catch (MessagingException mex) {
mex.printStackTrace();
}
}//fine for
}//fine messagesAdded
});



ma qualcosa nn va, non ho capito il meccanismo?
mentre scarica le email provo a mandare un'altra, ma non se ne accorge nč durante, nč dopo lo scaricamento delle mail.

doce sbaglio?

gaglioppo
25-02-2006, 21:47
provo a spiegarmi meglio:
utilizzo il seguente codice per ottenere un'istanza di folder che contiene in pratica tutti i messaggi della casella di posta.

import java.io.*;
import java.net.*;
import java.util.*;
import javax.mail.*;
import javax.mail.event.*;
import javax.activation.*;
.....
.....
.....
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("pop3");
store.connect("quicimettoilpop3","quicimettousername","quicimettoopass");
folder = store.getFolder("INBOX"]);
folder.open(Folder.READ_WRITE);
int numero_email=folder.getMessageCount();
....
.....


ora, folder possiede alcuni metodi, quali getMessageCount() che mi restituiscono il numero di messaggi presenti nella casella.

Il problema č come accorgersi, dopo aver richiamato il suddetto codice, che ci sono nuovi messaggi.
La mia idea era quella di controllare con un listener il numero di messaggi presenti, nn appena aumenta si va a prendere il nuovo messaggio.

Ho provato ad usare qualche while, ma i risultati sono inesistenti o deleteri.

grazie a chi vorrā aiutarmi