def extract_mime_attachements \ ( msg, directory , def_ext = None , ignore = _is_false , main_type = _is_false , name_pat = _is_false , part_indices = None , sub_type = _is_false ) : if def_ext and not def_ext.startswith (".") : def_ext = "." + def_ext pis = part_indices if part_indices else range (len (msg.parts)) for i in pis : p = msg.parts [i] specified = (not ignore (p.content_type)) and \ ( main_type (p.main_type) or name_pat (p.filename) or sub_type (p.sub_type) ) if specified : name = p.filename or ("%s_%s" % (msg.name, i)) fn = Filename (directory, name) if def_ext : fn = Filename (def_ext, fn) print (" Saving", name) PMA.save (fn, p.body) elif p.main_type in ("multipart", "message") : extract_mime_attachements \ ( p, directory , def_ext, ignore, main_type, name_pat, part_indices, sub_type )
def download_pop (self, server, mdir) : md_name = PMA._Mailbox_.md_name result = 0 for msg_no, msg_size in self.pop_list (server) : email = self._new_email ("\n".join (server.retr (msg_no) [1])) name = md_name () tname = sos.path.join (mdir.path, "tmp", name) nname = sos.path.join (mdir.path, "new", name) PMA.save (tname, email.as_string ()) sos.link (tname, nname) sos.unlink (tname) server.dele (msg_no) result += 1 if self.finish : break return result