Hi there, I've written the following example handler for Mailman but have a bug that I can't for the life of me understand why it's happening... It's based on Personalize.py (yes, I'm aware it's deprecated, but it works for me. :-))
Basically. The email gets encrypted correctly for the first person (and sent to them), but the second person gets person one's mail encrypted!! Basically "valu"e doesn't get reset back to the actual unencrypted email contents (msg). I'm sure I'm missing something stupid in my loop (to do the multi-part stuff). If someone spots it I'ld really appreciate a mail. Thanks in advance. Donal DCU ----------------------------------------------------- def process(mlist, msg, msgdata): if getattr(mlist, 'crypto_processing') <> 1: return if not msgdata.get('decrypted'): return # Make a copy for each recipient, and re-queue the copies to the incoming # queue. Set the pipeline for the copies to just Decorate and # ToOutgoing. The normal queue on the original copy should take care of # everything else. newpipeline = ['Decorate', 'ToOutgoing'] inq = get_switchboard(mm_cfg.INQUEUE_DIR) # Save the original To: line originalto = msg['To'] # Create a separate message for each recipient savedmsg = msg for member in msgdata.get('recips', []): msg = savedmsg syslog('error', 'msg: %s' % msg) r_code = 1 metadatacopy = msgdata.copy() metadatacopy['pipeline'] = newpipeline metadatacopy['recips'] = [member] metadatacopy['encrypted'] = 1 del msg['To'] name = mlist.getMemberName(member) if name: msg['To'] = '%s (%s)' % (member, name) else: msg['To'] = member # Walk the message tree and tree to encrypt text/plain parts. for part in msg.walk(): if part.get_type('text/plain') == 'text/plain': # text/plain message part - encrypt it. value = part.get_payload() if not value: pass else: try: syslog('error', 'value **2**: %s' % value) (r_code,result) = IBE.encrypt_msg(value, mlist.getMemberCPAddress(member)) syslog('error', 'result: %s' % result) if r_code == 1: part.set_payload("""Error occurred during encryption of this message / message part.\n\n Error msg:\n"""+result) else: part.set_payload(result) del metadatacopy['decrypted'] except Exception, e: syslog('error', 'Error in encrypt_msg, IBE.py: %s' % e) else: # Non text/plain msg part. Ignore. pass inq.enqueue(msg, metadatacopy, listname=mlist.internal_name()) # Restore the original To: line del msg['To'] msg['To'] = originalto # Don't let the normal ToOutgoing processing actually send the original # copy. del msgdata['recips'] ----------------------------------------------------- _______________________________________________ Mailman-Developers mailing list [EMAIL PROTECTED] http://mail.python.org/mailman-21/listinfo/mailman-developers