⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 folder.py

📁 用python实现的邮件过滤器
💻 PY
字号:
import ZODBfrom Persistence import Persistentfrom BTrees.OOBTree import OOBTree, OOSet, differenceimport emailimport mailboximport osimport statfrom pspam.message import PMessagetry:    True, Falseexcept NameError:    # Maintain compatibility with Python 2.2    True, False = 1, 0def factory(fp):    try:        return email.message_from_file(fp, PMessage)    except email.Errors.MessageError, msg:        print msg        return PMessage()class Folder(Persistent):    def __init__(self, path):        self.path = path        self.mtime = 0        self.size = 0        self.messages = OOBTree()    def _stat(self):        t = os.stat(self.path)        self.mtime = t[stat.ST_MTIME]        self.size = t[stat.ST_SIZE]    def changed(self):        t = os.stat(self.path)        if (t[stat.ST_MTIME] != self.mtime            or t[stat.ST_SIZE] != self.size):            return True        else:            return False    def read(self):        """Return messages added and removed from folder.        Two sets of message objects are returned.  The first set is        messages that were added to the folder since the last read.        The second set is the messages that were removed from the        folder since the last read.        The code assumes messages are added and removed but not edited.        """        mbox = mailbox.UnixMailbox(open(self.path, "rb"), factory)        self._stat()        cur = OOSet()        new = OOSet()        while 1:            msg = mbox.next()            if msg is None:                break            msgid = msg["message-id"]            cur.insert(msgid)            if not self.messages.has_key(msgid):                self.messages[msgid] = msg                new.insert(msg)        removed = difference(self.messages, cur)        for msgid in removed.keys():            del self.messages[msgid]        # XXX perhaps just return the OOBTree for removed?        return new, OOSet(removed.values())if __name__ == "__main__":    f = Folder("/home/jeremy/Mail/INBOX")

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -