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)
전에 오류를 던지는 것을 발견했다. 나는 이것이 진짜 답이 아니기 때문에 대답으로 표시하지 않을 것이다.
"javax.mail.IllegalWriteException : IMAPMessage는 읽기 전용입니다."... 연구를 수행 한 후 saveChanges()가 IMAP과 상호 작용하는 방식이 아닌 것 같습니다 –
죄송합니다. 그것은 imap이었다. Imap 메시지는 read_only입니다. –
아, 내가 뭘 잘못하고 있는지 알아. 도움을 주셔서 감사합니다 ... 내 코드에서 논리 오류가 발생했습니다. –