我正在閱讀emailServer的電子郵件並將它們保存在database.I使用以下代碼從文件夾中讀取郵件郵件服務器(「INBOX」),並檢索對應給他們的消息,但我得到java.lang.ArrayIndexOutOfBoundsException t at 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)"
我使用javax.mail.1.4.4
,這個問題主要是來當收件箱收到了大量。使用
代碼:
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);
我做了一些研究,發現messagecache是,一旦它打開設置一個文件夾,讓我們假設它被設置爲520(該文件夾的大小)。而如果消息緩存設置後有任何消息到達,則在最後的消息序列中,num超過消息緩存的總大小,並且會引發異常。
有人可以讓我知道如何獲得文件夾中最後一條消息的UId的絕對值或如何獲取文件夾鎖定,以便在設置了緩存後,文件夾不會更新文件夾的大小。
感謝這個解決辦法。這個bug是否得到修復?我只是用javax.mail'1.4.7'(最新的穩定版本)運行它,所以我猜不是。 – nicholas79171