2012-02-26 64 views
1

我有一个python脚本如下:未读邮件占

import imaplib, re 
import os 
import time 
import socket 

imap_host = 'imap.gmail.com' 
mail = imaplib.IMAP4_SSL(imap_host) 
mail.login("user", "pass") 
mail.select("inbox") # connect to inbox. 

while True: 
    try: 
     result, data = mail.uid('search', None, 'UNSEEN') 
     uid_list = data[0].split() 
     print len(uid_list), 'Unseen emails.' 
     if len(uid_list) > 20: 
     os.system('heroku restart --app xxx') 
     time.sleep(60) 
    except KeyboardInterrupt: 
     print 'Quitting' 
     pass 

的目标是要检查有多少未读邮件,并重新启动服务器的Heroku。问题在于它似乎不能很好地工作。

~# python gmail_new.py 
1 Unseen emails. 
0 Unseen emails. 

当我开始了第一次,它的工作原理(1个未读邮件),但它应该已返回20,而不是0。而接下来的第二次也是0,从来没有超过0。我不能似乎找出原因。

+1

我无法复制:使用我的帐户,我收到“1封看不见的电子邮件”一遍又一遍地打印。 – 2012-02-26 23:17:03

+0

另外,它为什么会第二次返回20?在等待的那一刻你收到了19封新邮件吗?另外,你确定你没有在隔时间内检查该电子邮件吗? – 2012-02-26 23:19:26

回答

-1

据我所知,你会得到一个额外的看不见的电子邮件。 确保您的帐户中有几封未读邮件。 取代:

print len(uid_list), 'Unseen emails.' 

print len(uid_list)-1, 'Unseen emails.' 

这应该工作。