Welcome, guest | Sign In | My Account | Store | Cart
import os, sys, getpass
import poplib # http://docs.python.org/library/poplib.html
from email.utils import parsedate_tz
import calendar
import datetime

# The main parameter
last_wanted
= datetime.datetime(2009, 10, 5)
print last_wanted

# Your pop parameter
M
= poplib.POP3('your pop server host')
M
.user(getpass.getuser())
M
.pass_(os.getenv('PASS'))

messages_ids
= [ int(m.split()[0]) for m in M.list()[1]]
messages_ids
.reverse()

print 'messages_cnt', len(messages_ids)

def get_last_message_id(messages_ids, M, last_wanted):
   
for i in messages_ids:
       
try:
            message_lines
= M.top( str(i), '0')[1]
       
except poplib.error_proto:
           
print 'Problem in pop top call...'
           
continue

       
for line in message_lines:
           
if line.startswith('Date:'):

                date_hdr
= line.partition('Date: ')[2]
               
# print date_hdr
               
try:
                   
(y, month, d, \
                     h
, min, sec, \
                     _
, _, _, tzoffset) = parsedate_tz(date_hdr)
               
except (TypeError): continue
               
except (ValueError): continue

               
# Python range builtin ?
               
if month < 0 or month > 12: continue
                max_day_per_month
= max(calendar.monthcalendar(y, month)[-1])
               
if d <= 0 or d > max_day_per_month: continue
               
if h < 0 or h > 23: continue
               
if min < 0 or min > 59: continue

                date
= datetime.datetime(y, month, d, h, min, sec)

               
print date
               
if date < last_wanted:
                   
return i

last_id
= get_last_message_id(messages_ids, M, last_wanted)
messages_to_delete
= [i for i in messages_ids if i < last_id]
print 'to delete', len(messages_to_delete)

for i in messages_to_delete:
    M
.dele( str(i) )
M
.quit()

History