On 05/04/2013, at 22:08, mayak-cq <mayak@xxxxxxxxxxxxxx> wrote: > it works -- mail consulted from sogo web mail client and i am running 2.4.17 on x64, but i am wondering what is the best way to split this up, or, move it to a new directory and start a new archive ... I wrote a script which moves messages into a new subfolder each month for this sort of account.#!/usr/local/bin/python import imaplib, datetime, re user = 'user' password = 'password' host = 'mail.foo.com' def movemail(imap, base, fake = False): stat, msg = imap.select(base) assert(stat == 'OK') now = datetime.datetime.utcnow() lstMnthSt = datetime.date(now.year, now.month, 1) if (now.month != 1): lstMnthEn = datetime.date(now.year, now.month - 1, 1) else: lstMnthEn = datetime.date(now.year - 1, 12, 1) qry = ["SENTSINCE", "%02d-%s-%04d" % (lstMnthEn.day, lstMnthEn.strftime("%b"), lstMnthEn.year)] qry.extend(["SENTBEFORE", "%02d-%s-%04d" % (lstMnthSt.day, lstMnthSt.strftime("%b"), lstMnthSt.year)]) stat, msg = imap.search(None, *qry) assert(stat == 'OK') msgcount = len(msg[0].split()) msglist = msg[0] foldername = "%s.%04d-%02d-%02d" % (base, lstMnthEn.year, lstMnthEn.month, lstMnthEn.day) print "Copying to " + foldername stat, msg = imap.create(foldername) assert(stat == 'OK' or msg[0] == 'Mailbox already exists') stat, msg = imap.subscribe(foldername) assert(stat == 'OK') if (not fake): # Annoyingly imaplib does not take into account any line # length limits in the server so we have to manually split # everything up.. pymsglist = msglist.split() pidx = 0 while (pidx < len(pymsglist)): imaplist = reduce(lambda a, b: a + ',' + b, pymsglist[pidx:pidx + 100]) stat, msg = imap.copy(imaplist, foldername) assert(stat == 'OK') stat, msg = imap.store(imaplist, '+FLAGS', '\\Deleted') assert(stat == 'OK') pidx = pidx + 100 print "Copied " + imaplist stat, msg = imap.select(base) assert(stat == 'OK') stat, msg = imap.expunge() assert(stat == 'OK') else: print "Would move & delete %d messages" % (msgcount) splitlist = msglist.split() abbrevlist = splitlist[:10] abbrevlist.extend(splitlist[-10:]) for m in abbrevlist: stat, msg = imap.fetch(m, '(ENVELOPE)') print "%s -> %s" % (m, re.findall('[0-9]+ [a-zA-Z]+ [0-9]+ ..:..:.. \+....', msg[0])) def init(): imap = imaplib.IMAP4_SSL(host) stat, msg = imap.login(user, password) assert(stat == 'OK') return(imap) imap = init() movemail(imap, 'INBOX.folder1', fake = False) movemail(imap, 'INBOX.folder2', fake = False) -- Daniel O'Connor software and network engineer for Genesis Software - http://www.gsoft.com.au "The nice thing about standards is that there are so many of them to choose from." -- Andrew Tanenbaum GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus