Sto leggendo le email da emailServer e salvandole nel database. Sto usando il seguente codice per leggere i messaggi dalla cartella ("inbox") sul server di posta elettronica e ricevere messaggi corrispondenti a loro, ma io sono semprejava.lang.ArrayIndexOutOfBoundsException t a com.sun.mail.imap.MessageCache.getMessage (MessageCache.java:123)
"java.lang.ArrayIndexOutOfBoundsException: message number (621) out of bounds (620)
at com.sun.mail.imap.MessageCache.getMessage(MessageCache.java:123)
at com.sun.mail.imap.MessageCache.getMessageBySeqnum(MessageCache.java:153)
at com.sun.mail.imap.IMAPFolder.getMessageBySeqNumber(IMAPFolder.java:2795)
at com.sun.mail.imap.IMAPFolder.getMessagesByUID(IMAPFolder.java:1924)"
sto usando javax.mail.1.4.4, questo problema è venuta soprattutto quando casella di posta è sempre allagata.
codice utilizzato:
folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
// messageUID is uid of last message I saved in DB
Message messages[] = ((UIDFolder) folder).getMessagesByUID(messageUID + 1, UIDFolder.LASTUID);
ho fatto qualche ricerca e ha scoperto che messagecache è impostato per una cartella non appena si apre, lascia supporre che è impostato come 520 (dimensione della cartella). Mentre se arriva un messaggio dopo aver impostato la cache dei messaggi, nell'ultima sequenza di messaggi num supera la dimensione totale della cache dei messaggi e genera un'eccezione.
Qualcuno può farmi sapere come ottenere il valore assoluto di UId dell'ultimo messaggio in una cartella o come acquisire un blocco di cartella in modo che dopo aver impostato la cache, la cartella non aggiorna la dimensione della cartella.
Grazie per questa soluzione. Questo bug è mai stato corretto? Mi sono imbattuto in javax.mail '1.4.7' (l'ultima build stabile), quindi non sto indovinando. – nicholas79171