2013-11-27 3 views
1

JavaMail을 사용하여 Exchange 사서함 (내가 일하는 회사 전용)에 액세스하고 있습니다. 해당 코드는 다음과 같습니다.JavaMail을 사용하여 메시지를 삭제할 수 없습니다.

Store store = Session.getDefaultInstance(props, null).getStore("imap"); 
store.connect(...stuff...); 
Folder inbox = store.getFolder("INBOX"); 
inbox.open(Folder.READ_WRITE); 
int numOfMessages = inbox.getMessageCount(); 
for (int i = 1; i<=numOfMessages; i++){ 
    Message message = inbox.getMessage(i); 
    message.setFlag(Flags.Flag.DELETED, true); 
    System.out.println(message.getSubject()); 
} 
inbox.close(true); 
store.close(); 

모든 메시지 이름에 올바르게 액세스하고 인쇄합니다. 그러나 각 실행 단계마다 동일한 이름을 반복해서 인쇄하므로 실제로 삭제되지 않았 음을 나타냅니다.

해결 : 나는 (내가 적용 할 것으로 코드에서) 나는 inbox.close(true) 전에 오류를 던지는 것을 발견했다. 나는 이것이 진짜 답이 아니기 때문에 대답으로 표시하지 않을 것이다.

답변

1

Message 개체의 saveChanges 메서드를 호출 해보세요. Javadoc here.

+0

"javax.mail.IllegalWriteException : IMAPMessage는 읽기 전용입니다."... 연구를 수행 한 후 saveChanges()가 IMAP과 상호 작용하는 방식이 아닌 것 같습니다 –

+0

죄송합니다. 그것은 imap이었다. Imap 메시지는 read_only입니다. –

+0

아, 내가 뭘 잘못하고 있는지 알아. 도움을 주셔서 감사합니다 ... 내 코드에서 논리 오류가 발생했습니다. –

관련 문제