2012-07-09 10 views
1

그냥 내 코드에서 이상한 행동을 감지하고 문제의 맨 아래로 가려고했습니다. imap 라이브러리를 사용할 때 메일을 확인하려고 할 때마다 매번 새로운 메일이 있는지 확인해야합니까? 예를 들어IMAP python 메일 확인 - 매번 로그인 하시겠습니까?

#get_mail function. 
def get_mail(): 
     conn = imaplib.IMAP4_SSL('imap.gmail.com') 
     conn.login(gmail_user_id,gmail_user_pass) 
     conn.select('inbox') 
     conn.search(None,'(Inbox)') 
     return something here 

가 대신 내가 좋아하는 뭔가를 할 수 :

#create 'conn' as a global var 
conn = imaplib.IMAP4_SSL('imap.gmail.com') 
conn.login(gmail_user_id,gmail_user_pass) 
conn.select('inbox') 
#get_mail function 
def get_mail(): 
     conn.search(None,'(Inbox)') 
     return something here 

문제는 새 메일이 CONN 후에 전송 된 경우 위의 두 번째 코드에서 생성되는입니다, 그것은 존재하지 않습니다 가져 왔습니다. 그렇다면 함수가 실행될 때마다 다시 로그인해야합니까?

답변

1

새 메일이 있는지 확인하기 위해 매번 로그인해야합니까?

예.

문제는이 인출되지 않는, 새로운 메일이 CONN 이후에 전송 된 경우 상기 제 코드에서 생성된다는 것이다. 그래서 나는 함수가 실행될 때마다 다시 로그인해야합니까?

일반적으로 다시 로그인 할 필요가 없습니다. IMAP 서버가 지원하는 경우 일반적으로 IDLE을 사용합니다. IDLE 지원은 연결을 열어 (따라서 "유휴") 새 메시지를 폴링해야한다는 것을 의미합니다. 루프에서 새 메시지를 수신하는 방법을 설명하는 this link을 참조하십시오.

관련 문제