A máme tu další z řady jednoduchých skriptíků pro práci s IMAPem. Tentokráte smažeme všechny staré maily, aby složky s mailing listy příliš nebobtnaly.
#!/usr/bin/python
import sys
import imaplib
import time
import string
def purge_step(age, flag):
l = m.search(None, flag, 'UNFLAGGED', 'UNDELETED', 'BEFORE', time.strftime('%d-%b-%Y', age))
for st in l[1]:
if st:
sts = st.split()
while sts:
m.store(string.join(sts[:1000], ','), '+FLAGS.SILENT', '\deleted')
del sts[:1000]
if len(sys.argv) != 4:
print 'Usage: imap_purge folder age unreadage'
sys.exit(4)
folder = sys.argv[1]
ts_read = time.localtime(time.time() - (int(sys.argv[2]) * 86400))
ts_unread = time.localtime(time.time() - (int(sys.argv[3]) * 86400))
m = imaplib.IMAP4('SERVER')
res = m.login('USERNAME', 'PASSWORD')
if res[0] != 'OK':
sys.stderr.write("login: %s\n" % str(res))
sys.exit(1)
res = m.select(folder)
if res[0] != 'OK':
sys.stderr.write("select: %s\n" % str(res))
sys.exit(2)
purge_step(ts_read, 'SEEN')
purge_step(ts_unread, 'UNSEEN')
m.expunge()