문제

Java에서 Gmail 계정에 연결하고 전송 된 Atachments를 다운로드하는 멋진 프로그램을 작성했습니다. 첨부 파일이 다운로드되면 읽기로 표시되어 다시 다운로드되지 않습니다. 이 프로그램은 단일 첨부 파일이 두 번 다운로드되지 않도록 각 프로그램이 고유 한 첨부 파일을 다운로드하는 여러 인스턴스로 실행해야합니다. 문제는 현재 첨부 파일이 괜찮은 크기 인 경우 한 프로그램이 여전히 다운로드되고 있으며 다른 인스턴스가 연결되어 첨부 파일이 읽기로 표시되기 전에 첨부 파일을 다운로드하기 시작한다는 것입니다.

다양한 깃발을 확인하고 설정하고 폴더가 열려 있는지 확인하려고 시도했지만 아무것도 작동하지 않습니다. 솔루션이 있습니까?

업데이트 : 빠른 답변에 감사드립니다. 슬프게도 IMAP는 다른 이유로 인해 옵션이 아닙니다.

도움이 되었습니까?

해결책

다른 사람들이 언급했듯이 POP3는 실제로 이러한 종류의 시나리오를위한 것이 아닙니다.

POP3를 절대 사용해야하는 경우 모든 이메일을 중간 서버로 다운로드하여 메시지를 정렬하고 다른 클라이언트를 사용할 수 있도록하는 것이 좋습니다.

전자 메일의 처리를 배포하려는 것 같습니다. 이 경우 각 클라이언트가 중간 서버에 연결하여 다음 사용 가능한 메시지를 검색 할 수 있습니다.

귀하의 제약이 무엇인지 잘 모르겠지만 전자 메일 외에 다른 방식으로 부착물을받는 것을 고려하고 싶을 수도 있습니다. 사람들이 파일을 업로드하는 경우 처리를 위해 각 파일을 자동으로 사용 가능한 응용 프로그램 인스턴스로 자동 전송하는 웹 양식을 설정할 수 있습니다.

다른 팁

대신 IMAP 사용을 고려하십시오 - 클라이언트 서버 상호 작용을 위해 설계되었습니다.

에서 RFC1939 (우체국 프로토콜 - 버전 3) :

POP3은 서버에서 메일의 광범위한 조작 작업을 제공하기위한 것이 아닙니다. 일반적으로 메일이 다운로드 된 다음 삭제됩니다. 보다 진보 된 (및 복잡한) 프로토콜 인 IMAP4는 RFC1730.

나는 POP3가 만들어 졌다고 생각하지 않는다 다중 동시 입장.

스스로에게 물어보십시오 : 동일한 사서함에 액세스하는 여러 프로세스가 필요합니까?

그렇게한다면, 이러한 프로세스가 서로 통신하도록하는 방법을 찾아야합니다. 공통 데이터베이스 또는 서버 프로세스를 사용하여 작업을 조정하십시오.

IMAP 하다 더 많은 옵션이 있지만, 단일 메일을 "잠금"하여 처리중인 것으로 표시 할 수 있는지 확실하지 않습니다.

POP3 연결을 유지 해야하는 경우 이전에 다운로드 한 메시지 ID의 로컬 데이터베이스를 유지할 수 있습니다. 그런 다음 새로운 인스턴스가 다시 다운로드하기 전에이를 확인할 수 있습니다. IMAP가 다운로드하기 전에 읽기/읽지 않은 플래그를 설정할 수 있으므로 최상의 솔루션은 IMAP를 사용하는 것입니다.

다운로드를 시작하기 전에 메일을 읽은대로 표시 한 다음 다운로드를 시작할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top