Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Lettura nuove email con imap

    ciao a tutti e buona pasqua!

    attraverso JavaMail correi connettermi alla mia casella Gmail, tramite imap, e leggere le varie email non lette.
    avrei fatto questo metodo:
    codice:
        public void getEmailsNotRead(String protocol, String host, String port, String userName, String password) throws MessagingException {
            Properties properties = getServerProperties(protocol, host, port);
            Session session = Session.getDefaultInstance(properties);
            Store store = session.getStore(protocol);
            store.connect(userName, password);
            Folder inbox = store.getFolder("INBOX");
            inbox.open(Folder.READ_WRITE);
            int count = inbox.getMessageCount();
            Message[] messages = inbox.getMessages(1, count);
            for (Message message : messages) {
                if (!message.isSet(Flags.Flag.SEEN)) { // PROBLEMA
                    System.out.println("Read");
                    Address[] fromAddresses = message.getFrom();
                    System.out.println("...................");
                    System.out.println("\t From: " + fromAddresses[0].toString());
                    System.out.println("\t To: " + parseAddresses(message.getRecipients(RecipientType.TO)));
                    System.out.println("\t CC: " + parseAddresses(message.getRecipients(RecipientType.CC)));
                    System.out.println("\t Subject: " + message.getSubject());
                    System.out.println("\t Sent Date:" + message.getSentDate().toString());
                }
            }
            inbox.close(false);
            store.close();
        }
    il problema è nella riga commentata.
    in pratica se levo il punto escalamativo, facendo in modo di visualizzare le email lette, funziona tutto.
    nel senso che mi appaiono tutte le email già lette.
    se invece faccio il contrario, non appare nulla.
    rimane in attesa, ma non viene mai visualizzato nulla, come se non vedesse le email non lette.
    ma vi assicuto che ce ne sono, e di preciso ce ne sono 17.
    qualche idea??

  2. #2
    ok ho capito.
    con questa riga, inizia a prendere le email dalla prima, ed essendo più di 3000 email ci mette un pò:

    Message[] messages = inbox.getMessages(1, count);

    se la cambio così invece parte dalle ultime e tutto funziona:

    Message[] messages = inbox.getMessages(count - 10, count);

    ciao!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.