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.getDefaultInstancepropnull );
  }

  
/**
   * 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 setStoreString providerString hostString userNameString password ){

    try {
      
conserva sessione.getStoreprovider );
      
conserva.connecthostuserNamepassword );
    }
    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 readEmailString provider,String hostString userNameString password ){

    
this.setStoreproviderhostuserNamepassword );
    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.openFolder.READ_ONLY );
          
elencoMessaggio folder.getMessages();
          for( 
int i 0elencoMessaggio.lengthi++ ){

            
this.daChi = ( InternetAddress )( elencoMessaggio].getFrom()[ ] );
            
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.calcolaKByteselencoMessaggio[i].getSize() ) );
          }
          
folder.closefalse );
        }
        catch (
MessagingException ex2) {

          
System.err.printlnex2.getMessage() );
        }
      }else{

        
System.out.println"Folder INBOX non individuato" );
      }
    }else{

      
System.out.println"Folder di default non trovato" );
    }
  }