2012-10-19 1 views
1

Gmail 계정의 메일을 아래 코드로 읽었습니다.두 번째 시간 동안 스크립트를 실행하면 메일 서버에서 메일을 가져 오지 않습니다.

import poplib 
pop_conn = poplib.POP3_SSL('pop.gmail.com') 
pop_conn.user('user')    # result: '+OK send PASS' 
pop_conn.pass_('password')  # result: '+OK Welcome.' 
print pop_conn.list()[1] 
pop_conn.quit() 

예상대로 1 개의 메시지가 표시됩니다.
그러나 두 번째로이 스크립트를 실행하면 결과적으로 0 개의 메시지가 표시됩니다. 서버에서 메시지는 여전히 읽히고 읽지 않습니다.
두 번째로 스크립트를 실행하는 모든 메시지를 얻으려면 어떻게해야합니까?

나에게 동일한 메일을 두 번 다운로드하지 않는 이메일 클라이언트로 작동합니다. 프로그램에서 모든 것을 다시 다운로드하도록하는 플래그가 있습니까? 나는 우분투에서 파이썬 2.7.x를 사용한다. 12.10

+0

아마도 좀 더 정교하고 더 많은 컨텍스트 (예 : 어떤 파이썬 버전 등)를 제공 할 수 있습니다. 스 니펫이 나에게 잘 작동하는 것으로 나타났습니다. 매번 같은 이메일 메시지 목록이 표시됩니다. python 2.7.x로 시도했다. – mjv

+0

@mjv 귀하의 PC에서 작동한다는 것을 알려 주셔서 감사합니다. 호기심과 호기심을 얻고 있습니다. 나는 pop3으로 실패한 후에 우분투 12.10 –

답변

1

그것이 일어 났을 때했던 모든 것이 틀림 없습니까? 내가 아는 한, list()을 사용해서는 안되지만, retr()을 사용하여 메시지 내용을 읽는다면, POP3 서버는 종종 메시지를 표시하고 더 이상 연결을하지 않을 것입니다.

예를 들어 동작을보다 자세하게 지정할 수 있으므로 IMAP을 대신 사용해 볼 수 있습니다. 메시지를 본 것으로 표시하지 말고 한 번 이상 검색 할 수 있습니다. Google은 IMAP을 지원하며 Python은이를 사용하기 위해 imaplib을 사용합니다.

+0

에 파이썬 2.7.x를 사용했다. 나는 작동하는 imap 솔루션을 만들었다. 나는 그것이 왜 실패 할 수 있는지 이해하기 위해 여기에 물었다. 이제는 같은 컴퓨터에서이 스크립트를 실행하려고했지만 이제는 나에게 분명하지 않습니다. 나는 그것을 얻지 않는다. 내가 질문을 올렸을 때, 나는 retr()을 시도했을지도 모르지만, 그 후에 여러 번 해봤 다. 메시지를 보내고, 위의 스 니펫을 두 번 실행한다. 2 일째 - 아무 것도. 내 편에서 upvote,하지만 만약 누군가가 100 % 해결책을 내놓을 경우에 동의 받아 들일거야 –

+0

그럼 확실히 이상해. 이 경우, 누군가가 이것을 더 잘 설명 할 수 있기를 바랍니다. 지금 그것은 저를 너무 괴롭힌다. :) –