我正在阅读来自emailServer的电子邮件并将其保存在数据库中.我正在使用以下代码从电子邮件服务器上的文件夹("INBOX")中读取邮件并检索与其对应的邮件但我得到了
"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)"
Run Code Online (Sandbox Code Playgroud)
我正在使用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);
Run Code Online (Sandbox Code Playgroud)
我做了一些研究,发现一旦打开就为文件夹设置了messagecache,我们假设它被设置为520(文件夹的大小).如果在设置了消息缓存后到达任何消息,则在最后一个消息序列中,num超过了消息缓存的总大小,并引发异常.
任何人都可以让我知道如何获取文件夹中最后一条消息的UId的绝对值或如何获取文件夹锁定,以便在设置缓存后,文件夹不会更新文件夹的大小.