2011-01-10 2 views
0

내 응용 프로그램에서 OpenPop.net을 사용하고 있습니다. 이 응용 프로그램의 기능은 POP3 계정에서 메일을 다운로드하여 모든 첨부 파일 (CSV 파일)을 저장하고 처리하는 것입니다. 이 처리에는 많은 시간이 소요됩니다. 내가 알아낼 수 없습니다 나는이 예외 얻고 다음 CSV를 처리의 끝에서OpenPop.Net 예외

Exception message: OpenPop.Pop3.Exceptions.PopServerException: The stream used to retrieve responses from was closed 
    at OpenPop.Pop3.Pop3Client.IsOkResponse(String response) 
    at OpenPop.Pop3.Pop3Client.SendCommand(String command) 
    at OpenPop.Pop3.Pop3Client.DeleteMessage(Int32 messageNumber) 

을의 메일은 POP3 계정에서 삭제됩니다. 나는 이것이이 예외가 일어나는 곳이라고 믿는다.

답변

1

여기에 실제로 두 가지 문제가 있습니다. 하나는 POP3 서버에 연결되어있는 동안 많은 처리를하고 있다는 것입니다. 너가 너무 오래 유휴 상태 일 때, 서버는 너를 자원을 저장하기 위하여 단순히 끊을 것이다. 해야 할 일은 하나의 이메일을 가져 와서 첨부 파일을 처리 한 다음 다시 연결하여 다음 메일을 가져 오는 것입니다. 모든 첨부 파일을 가져 와서 오프라인으로 처리 할 수도 있습니다.

둘째, Gmail 계정에 연결하고있는 것 같습니다. Gmail에는 이상한 특징이 있습니다. A thread은 이러한 특성을 찾습니다. 그 중 하나는 이메일을 가져 왔을 때 서버와의 다음 POP3 세션에서 이메일을 사용할 수 없다는 것입니다. special username을 사용하여 연결할 수 있습니다. 여기에서 recent:을 일반 사용자 이름 앞에 추가합니다. 이렇게하면 이전 POP3 세션에 참석 했음에도 불구하고 지난 30 일 동안받은 전자 메일이 표시됩니다.

희망이 있습니다.

0

이미 닫힌 스트림을 읽으려고하는 것처럼 들립니다. 스트림을 전혀 처리하지 않습니까, 아니면 완전히 API 내부에서 처리 했습니까? 전혀 처리하지 않으면 스트림을 닫을 가능성이 있습니다 (누군가가 StreamReader을 사용하는 경우 종종 발생합니다. 대부분의 사람들은 StreamReader을 닫으면 기본 스트림을 닫음을 알지 못합니다).

+0

스트림을 처리하지 않습니다. 비록 내가 사용하는 연결 메서드에서 스트림에 대한 몇 가지 옵션을 참조하십시오. – Sidharth

+0

그 스트림에 대해 무엇을 전달하고 있습니까? –

+0

이 생성자를 사용하고 있습니다 – Sidharth