我正在使用此脚本从收件箱中删除邮件。
if(not debug):
logging.debug("removing messages")
all_mail.lock()
for message in all_mail:
all_mail.remove(message)
all_mail.flush()
all_mail.unlock()
all_mail.close()
运行此脚本一次后,我注意到/var/spool/mail
. 如果我再次尝试运行脚本,我会得到一个相当可预测的异常:mailbox.ExternalClashError: dot lock unavailable
所以似乎 all_mail.unlock() 不起作用,但我不确定还能做什么。
您的脚本应该引发异常,all_mail.remove(message)
因为它永远不会到达unlock
调用。一个mbox
如从一个正常的dict重要的区别,这里是你的问题:
默认邮箱迭代器迭代消息表示,而不是像默认字典迭代器那样迭代键。
这意味着for message in all_mail:
makemsg
包含一个mboxMessage
而不是一个键并且remove
引发KeyError
异常。
修复很简单:
for message in all_mail.iterkeys():
all_mail.remove(message)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句