好的,只是注意到我的代码中有一些奇怪的行为,只是试图找到问题的根源。当使用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之后发送了新邮件,则不会获取它。因此,每次运行该函数时都必须重新登录吗?
答案 0 :(得分:1)
我是否每次都必须登录以查看是否有新邮件?
是
问题是,在上面的第二个片段中,如果有新邮件 在创建conn之后发送,它没有被提取。我也是 必须在每次运行函数时重新登录?
通常情况下,您不必再次登录 - 如果IMAP服务器支持,您将使用IDLE
。 IDLE
支持意味着您只需通过保持连接打开(因此“空闲”)来轮询新消息。请参阅this link,其中介绍了如何在循环中侦听新消息。