2009-10-16 4 views
0

여러 IMAP 사서함에 액세스 할 수있는 전자 메일 클라이언트를 만들고 싶습니다. 나는 또한 처리를 위해 모든 이메일 사본을 원합니다. IMAP 명령을 사용하여이 작업을 수행하는 가장 좋은 방법은 무엇입니까?IMAP 사서함을 복제하는 방법

지금 당장 폴더를 반복하여 1 :에 플래그를 붙이고 * 읽은 내용을보고 이전에 읽은 메시지가 새 것으로 표시되면 모든 메시지에서 BODY.PEEK를 가져 오는 스크립트가 있습니다. 내 데이터베이스에 없어. 더 좋은 방법이 있습니까?

답변

1

더 좋은 방법은 모든 메시지 (UID FETCH 1 : * FLAGS)의 UID를 가져 와서 결과 UID 목록을 데이터베이스와 비교 한 다음 보유하지 않은 메시지를 다운로드하고 가지고있는 메시지를 모두 제거하는 것입니다. 서버는 (예 : 다른 IMAP 클라이언트 또는 웹 인터페이스를 사용하여 삭제되지 않습니다.) 이 방법은 IMAP 폴더 (AFAIK)를 복제하는 유일한 신뢰할 수있는 방법입니다. (물론 UIDVALIDITY도 고려해야합니다!)

다른 IMAP 클라이언트가 응용 프로그램 외에도 사서함에 액세스하는 경우 원래 방법이 올바르게 작동하지 않습니다. 이론 상으로는 NOOP와 IDLE을 사용하여 새 메시지와 삭제 된 메시지를 확인하는 IMAP 서버에 지속적으로 연결 되어도 문제가 없지만 실제로는 불가능합니다. 심지어 GMail에도 100 % 가동 시간이 없습니다 :-)

궁극적 인 IMAP 클라이언트는 두 가지 접근 방식을 결합합니다.

관련 문제