JavaMail API와 IMAP를 사용하여 메일이 폴더 a에서 b로 이동되었음을 알았 으면합니다. 리스너를 추가하지 않고 어떻게 할 수 있습니까? 나는 계정에 로그인하고 폴더를 열 때 메시지의 변화를 발견하고 싶다.IMAP을 이용한 메일 링 : 메시지가 한 폴더에서 다른 폴더로 이동 한 것을 탐지하는 방법은 무엇입니까?
문제는 폴더 1에 ID가 1 2 및 3 인 3 개의 메시지가 있고 ID가 3 인 메시지를 폴더 B로 이동하면 메시지의 ID가 변경되고 폴더에 ID가 1 인 메시지가있는 것입니다 B.
내 목표는 메일 서버의 메시지 구조를 내 로컬 서버와 동기화하는 것입니다. 나는 모든 메시지 정보, 깃발 등을 혼자서 지켜야한다. 따라서 로그인 할 때마다 메일 서버에 저장된 메시지의 모든 변경 사항을 발견해야합니다.
I에 의해 신규 또는 읽지 않은 메일을받을 수 있습니다
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.RECENT), true));
또는
Message messages[] = inbox.search(new FlagTerm(new Flags(Flag.SEEN), false));
에 의해하지만 난 단지 새 메일에 관심이없는 나는, 나는 또한 이전의 변경 사항을 알고 싶다 예를 들어 나는 그것에 대해 알리고 싶다 :
2 개월 전에 읽은 메일을 다른 폴더로 옮겼다.
내 생각은, UID를 변경하기 때문에
, 내가 메일을 식별하는 것을 사용할 수 없습니다. 제목 송신자 수신 날짜와 같은 메일 정보를 사용하고 해시 값을 작성하고 각 로그인시 메시지의 해시 값을 비교해야한다고 생각합니다. 성능 문제가 발생할 수 있습니다.
은 정확히 대답하려고합니다. Message-ID는 사용하기에 적합한 필드입니다 ... 물론 여러 폴더에 * 복사 * 된 메일을 고려해야하며 모든 메시지에 Message-ID (초안 ...?)가 없습니다. – rolfl
모든 메시지가 아닙니다. ''Message-Id'' 헤더를 가지고 있으며,이 헤더는 슬프게도 유일무이 함을 보장하지 않습니다. 인터넷 프로토콜과 RFC에 관해서, 당신은''반드시 (SHOULD) ''표현에 의존 할 수 없다. –
이 페이지의 내용 : http://stackoverflow.com/questions/219343/get-uid-for-message-from-gmail-using-javax-mail-with-imap?rq=1 Message-ID is 대부분의 경우에는 고유하지만 모든 경우에는 그렇지 않습니다.특히 자동화 된 발신자는 동일한 ID를 생성하거나 전혀 사용하지 않습니다 (메시지 ID :) – benchpresser