2016-11-27 1 views
0

quand je cours le code je reçois seulement de vieux mails, mais j'ai besoin d'obtenir un courrier avec un sujet spécial, qui est un nouveau courrier non lu ..... quel est le problème?JavaMail IMAP. Je ne reçois pas les nouveaux mails

grâce

public static void dumpMail() throws FileNotFoundException, IOException, MessagingException, FolderClosedException, SocketTimeoutException { 

Properties props = new Properties(); 
    String username = "ad\\" + "x"; 
    String password = "y"; 
    props.put("mail.imaps.host", "z"); 
    props.put("mail.imaps.port", "993"); 
    props.put("mail.imaps.connectiontimeout", "10000"); 
    props.put("mail.imaps.timeout", "10000"); 
    props.put("host", "z"); 
    props.put("user", username); 
    props.put("pass", password); 

    Session session = Session.getDefaultInstance(props, null); 

    Store store = session.getStore("imaps"); 
    store.connect("z", username, password); 

    Folder inbox = store.getFolder("inbox"); 
    inbox.open(Folder.READ_ONLY); 

    Flags seen = new Flags(Flags.Flag.SEEN); 
    FlagTerm unseenFlagTerm = new FlagTerm(seen, false); 

    Flags recent = new Flags(Flags.Flag.RECENT); 
    FlagTerm recentFlagTerm = new FlagTerm(recent, true); 

    SearchTerm searchTerm = new AndTerm(unseenFlagTerm, recentFlagTerm); 
    Message[] messages = inbox.search(searchTerm); 

    for (int i = 0; i < 30; i++) { 
     if (messages[i].getSubject().contains("Zeiterfassung")) { 
     System.out.println(messages[i].getContent());   
     } 
     } 
} 

Répondre

0

Est-il possible que d'autres applications accèdent à la même boîte de réception? Ils peuvent effacer le drapeau RECENT ou définir le drapeau SEEN.

Essayez de rechercher SEEN == false ou seulement RECENT == true. Pour le premier, vous devrez marquer tous les messages VUS avant de faire une nouvelle recherche. Si vous souhaitez uniquement rechercher des messages nouveaux depuis votre dernière recherche, il est préférable de garder une trace du dernier UID que vous avez vu et de considérer uniquement les messages avec un UID plus grand. Notez également que vous pouvez intégrer la recherche par sujet dans votre SearchTerm et laisser le serveur effectuer le travail de recherche à partir de ce sujet.