def file(src, dst, message, key): # ignore any message that is a tickler message if 'x-tickler' in message: return # notify, but only if from a VIP # extract addr from string in fmt "Joe P. Quinn <*****@*****.**>" from_header = message.get('from', '') from_match = re.search("[^ <]+@.[^ >]+", from_header) if from_match: from_addr = from_match.group(0) if from_addr in VIPs.keys(): notify(message) else: print "bad from address:", from_addr # file away, no matter whether from VIP or not print("mv %s/%s -> %s" % (maildirname(src), message.get("subject", ''), maildirname(dst))) dst.lock() dst.add(message) dst.flush() dst.unlock() src.lock() src.discard(key) src.flush() src.unlock()
print ("key exists: {} -> {}".format( addr, dst )) continue except KeyError: pass user, domain = addr.split('@') # prompt for VIP status fmap = {True: VIPS_FILE, False: ADDRESS_FILE} vd = {True:'VIP', False:'Non-VIP'} is_vip = raw_input("{} is VIP [y/N]? ".format(addr)).strip().lower() in ['y'] if is_vip: folder_name = "@vip" VIPs.update({addr:folder_name}) if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])): with open(fmap[is_vip], 'w') as f: json.dump(VIPs, f) else: folder_name = raw_input("{} -> {} [Enter/folder name/X] ".format(addr, user)).strip().lower() if folder_name == "": folder_name = user elif folder_name == "x": break if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])): non_VIPs.update({addr:folder_name}) with open(fmap[is_vip], 'w') as f: json.dump(non_VIPs, f)
continue except KeyError: pass user, domain = addr.split('@') # prompt for VIP status fmap = {True: VIPS_FILE, False: ADDRESS_FILE} vd = {True: 'VIP', False: 'Non-VIP'} is_vip = raw_input( "{} is VIP [y/N]? ".format(addr)).strip().lower() in ['y'] if is_vip: folder_name = "@vip" VIPs.update({addr: folder_name}) if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])): with open(fmap[is_vip], 'w') as f: json.dump(VIPs, f) else: folder_name = raw_input("{} -> {} [Enter/folder name/X] ".format( addr, user)).strip().lower() if folder_name == "": folder_name = user elif folder_name == "x": break if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])): non_VIPs.update({addr: folder_name}) with open(fmap[is_vip], 'w') as f: json.dump(non_VIPs, f)