IMAP python检查邮件 - 每次登录?

时间:2012-07-09 07:36:07

标签: python imap

好的,只是注意到我的代码中有一些奇怪的行为,只是试图找到问题的根源。当使用imap库并尝试检查邮件时,我是否必须每次登录才能查看是否有新邮件?例如

#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 个答案:

答案 0 :(得分:1)

  

我是否每次都必须登录以查看是否有新邮件?

  

问题是,在上面的第二个片段中,如果有新邮件   在创建conn之后发送,它没有被提取。我也是   必须在每次运行函数时重新登录?

通常情况下,您不必再次登录 - 如果IMAP服务器支持,您将使用IDLEIDLE支持意味着您只需通过保持连接打开(因此“空闲”)来轮询新消息。请参阅this link,其中介绍了如何在循环中侦听新消息。