示例#1
0
def saveatth(uname=''):

    userlist = [[], ]
    ms.listuser(uname, userlist)
    for user in userlist[0]:
        where = {'uname': user['uname'],
                 'filenames': {'$ne': []}}
        for doc in ms.mails.find(where):
            try:
                log.debug("saveatth: %s ", doc['sourcename'])
                mail = message(doc['source'])
                mail.parsebody()
                filepath = os.path.join(mailboxdir,
                                  user['alias'],
                                  doc.get('mailbox', 'Inbox'),
                                  os.path.splitext(
                                      os.path.basename(doc['sourcename']))[0])
                if not os.path.exists(filepath):
                    os.makedirs(filepath)
                for filename in mail.filenames:
                    file = open(os.path.join(filepath, filename), "wb")
                    file.write(mail._files[filename].get_payload(decode=True))
                    file.close()
                    if doc.get('mailbox') == 'Inbox':
                        save2edo(user['alias'], file.name)
            except:
                log.error('saveatth [%s] error: %s',
                      doc['sourcename'],
                      "".join(traceback.format_exception(*sys.exc_info())))
                continue
示例#2
0
def parsemails(uname=''):

    userlist = [[], ]
    ms.listuser(uname, userlist)
    for user in userlist[0]:
        where = {'uname': user['uname'],
                 'subject': {'$exists': False}}
        for doc in ms.mails.find(where):
            try:
                log.debug("parsemails: %s ", doc['sourcename'])
                mail = message(doc['source'])
                doc['msgid'] = mail._msg['Message-ID']
                doc['from'] = mail.From[0]
                doc['to'] = mail._msg['Delivered-To']
                doc['subject'] = mail.Subject
                doc['date'] = mail.Date
                doc['size'] = len(doc['source'])
                ms.mails.save(doc, safe=True)
            except:
                log.error('parsemails [%s] error: %s',
                      doc['sourcename'],
                      "".join(traceback.format_exception(*sys.exc_info())))
                continue
示例#3
0
def parsebody(uname=''):

    userlist = [[], ]
    ms.listuser(uname, userlist)
    for user in userlist[0]:
        where = {'uname': user['uname'],
                 'body': {'$exists': False}}
        for doc in ms.mails.find(where):
            try:
                log.debug("parsebody: %s ", doc['sourcename'])
                mail = message(doc['source'])
                mail.parsebody()
                if isinstance(mail.body, dict):
                    doc['body'] = dict([(k, Binary("".join(v), 128))
                                       for k, v in mail.body.items()])
                else:
                    doc['body'] = Binary(mail.body, 128)
                doc['filenames'] = mail.filenames
                ms.mails.save(doc, safe=True)
            except:
                log.error('parsebody [%s] error: %s',
                      doc['sourcename'],
                      "".join(traceback.format_exception(*sys.exc_info())))
                continue