Ciao.
ho scritto questa classetta un bel po' di tempo fa e, mi sembra, funzionasse.
Ora non la provo da un po' ma secondo potrebbe andare; anzi se la usi e funziona dimmelo così me la conservo ancora
.
Ovviamente sta a te metterla in un thread, per esempio, in maniera tale che parta ogni tot minuti.
Ciao
Codice PHP:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
public class ReceiveEMail {
/**
* Oggetto Store
*/
private Store conserva;
/**
* Oggetto properties
*/
private Properties prop;
/**
* Oggetto Sessione
*/
private Session sessione;
/**
* Oggetto Folder simile
* alla casella di posta elettronica
*/
private Folder folder;
/**
* Oggetto messaggio
*/
private Message messaggio;
/**
* Array di messaggi contenuti in quel folder
*/
private Message[] elencoMessaggio;
/**
* Indirizzo mittente
*/
private InternetAddress daChi;
/**
* Indirizzo destinatario
*/
private InternetAddress aChi;
/**
* Oggetto stringa
* contenete l'indirizzo
* del mittente
*/
private String da;
/**
* Costruttore della classe
*/
public ReceiveEMail( ) {
prop = System.getProperties();
sessione = Session.getDefaultInstance( prop, null );
}
/**
* Metodo che si occupa di settare lo Sotre in base a:
* 1) tipo di protocollo ( Se POP3 o IMAP )
* 2) l'host cui connettersi
* 3) l'username
* 4) la password
* @param provider -specifica se s i usa POP3 oppure IMAP o qualsiasi altro
* @param host -l'host cui connettersi
* @param userName -l'username del client
* @param password -la password del client
*/
private void setStore( String provider, String host, String userName, String password ){
try {
conserva = sessione.getStore( provider );
conserva.connect( host, userName, password );
}
catch (NoSuchProviderException ex) {
ex.printStackTrace();
}
catch( MessagingException me ){
me.printStackTrace();
}
}
/**
* Metodo che si occupa di leggere l'email
* @param provider -specifica se s i usa POP3 oppure IMAP o qualsiasi altro
* @param host -l'host cui connettersi
* @param userName -l'username del client
* @param password -la password del client
*/
public void readEmail( String provider,String host, String userName, String password ){
this.setStore( provider, host, userName, password );
try {
this.folder = conserva.getDefaultFolder();
}
catch (MessagingException ex) {
folder = null;
System.out.println ( ex.getMessage() );
}
if( folder != null ){
try {
folder = folder.getFolder("INBOX");
}
catch (MessagingException ex1) {
folder = null;
System.out.println ( ex1.getMessage() );
}
if( folder != null ){
try {
folder.open( Folder.READ_ONLY );
elencoMessaggio = folder.getMessages();
for( int i = 0; i < elencoMessaggio.length; i++ ){
this.daChi = ( InternetAddress )( elencoMessaggio[ i ].getFrom()[ 0 ] );
this.da = daChi.getPersonal();
if( da == null ){
da = daChi.toString();
}
System.out.println( "Nuovo messaggio DA:"+ da+" OGGETTO: "+elencoMessaggio[i].getSubject()+" DATA INVIO: "+elencoMessaggio[i].getSentDate()+" DIMENSIONI: "+ this.calcolaKBytes( elencoMessaggio[i].getSize() ) );
}
folder.close( false );
}
catch (MessagingException ex2) {
System.err.println( ex2.getMessage() );
}
}else{
System.out.println( "Folder INBOX non individuato" );
}
}else{
System.out.println( "Folder di default non trovato" );
}
}
}