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
                )
Exemple #2
0
 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