查找添加到IMAP邮箱自从我上次跟蟒蛇imaplib2检查新邮件?
-
20-09-2019 - |
题
我试图写一个程序,监视IMAP邮箱和自动复制每个新的输入消息为“存档”文件夹中。我使用imaplib2它实现了IDLE命令。这里是我的基本程序:
M = imaplib2.IMAP4("mail.me.com")
M.login(username,password)
lst = M.list()
assert lst[0]=='OK'
for mbx in lst[1]:
print "Mailboxes:",mbx
def process(m):
print "m=",m
res = M.recent()
print res
M.select('INBOX')
M.examine(mailbox='INBOX',callback=process)
while True:
print "Calling idle..."
M.idle()
print "back from idle"
M.close()
M.logout()
它打印正确的邮箱,并且当第一改变发生到邮箱运行过程()。但是,从最近的响应()是没有意义的我,第一个消息后,我从来没有得到任何其他通知。
任何人都知道如何做到这一点?
解决方案
请参阅例如,并引用蟒-IMAP -idle与 - imaplib2 。 该模块包括线程,你应该注意事件同步。
在例子表明与事件同步,和叶邮件处理到读取器:
# The method that gets called when a new email arrives.
# Replace it with something better.
def dosync(self):
print "Got an event!"
这问题以一个提示, “更好的东西”可以是:
# Replaced with something better.
def dosync(self):
print "Got an event!"
res = self.M.recent()
print res
其他提示
我发现,最近的()是一个有点模糊(这是一个IMAP模糊,不imaplib2)。似乎更好地保持消息编号的列表之前和之后空闲,并且不同的是新的消息。
然后,使用取(消息, “UID”),以获得所述消息的UID。
不隶属于 StackOverflow