전자 메일 서버에서 전자 메일을 읽고 데이터베이스에 저장하고 있습니다. 다음 코드를 사용하여 폴더에서 메시지를 읽습니다. 받은 편지함이 범람하기 때 이메일 서버 ("INBOX") 메시지가 그들에 해당하지만 난 javax.mail.1.4.4을 사용하고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)"
무엇입니까 검색이 문제는 주로오고있다. 사용
코드 :
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의 절대 값을 얻는 방법이나 폴더 잠금을 획득하여 캐시를 설정 한 후에 폴더가 폴더의 크기를 업데이트하지 못하게하는 방법을 알려줄 수 있습니까?
감사합니다. 이 버그가 고쳐 졌나요? 방금 javax.mail'1.4.7' (최신 안정 빌드)을 사용하여 방금 실행 했으므로 추측하겠습니다. – nicholas79171