Ich lese E-Mails von emailServer und speichern sie in der Datenbank.Ich verwende folgenden Code, um Nachrichten aus dem Ordner zu lesen („Inbox“) auf E-Mail-Server und abrufen von Nachrichten, die ihnen entsprechen, aber ich bin immerjava.lang.ArrayIndexOutOfBoundsException t bei 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)"
ich javax.mail.1.4.4 verwende, diese Frage kommt in erster Linie, wenn Posteingang überschwemmt zu werden.
-Code verwendet:
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);
Ich habe einige der Forschung getan und festgestellt, dass messagecache für einen Ordner festgelegt wird, sobald sie sich öffnet, lässt annehmen, dass es als 520 (Größe des Ordners) festgelegt ist. Wenn jedoch eine Nachricht ankommt, nachdem der Nachrichtencache festgelegt wurde, überschreitet die letzte Nachrichtensequenznummer die Gesamtgröße des Nachrichtencaches und löst eine Ausnahme aus.
Kann mir jemand wissen, wie man absoluten Wert von UId der letzten Nachricht in einem Ordner oder wie eine Ordnersperre erhalten, so dass nach dem Cache festgelegt wird, aktualisiert Ordner nicht die Größe des Ordners.
Dank für diese Problemumgehung. Wurde dieser Fehler jemals behoben? Ich habe es einfach mit javax.mail '1.4.7' (dem letzten stabilen Build) beschrieben, also rate ich nicht. – nicholas79171