import os, portage_exception, email.Message, socket def process(mysettings, cpv, logentries, fulltext): if(not "PORTAGE_ELOG_MAILCOMMAND" in mysettings.keys()) \ or len(mysettings["PORTAGE_ELOG_MAILCOMMAND"]) == 0: raise portage_exception.MissingParameter("!!! Mail logging requested but PORTAGE_ELOG_MAILCOMMAND is not defined") else: mymailcmd = mysettings["PORTAGE_ELOG_MAILCOMMAND"] mymailfrom = '' mymailrecipient = '' if(not "PORTAGE_ELOG_MAILFROM" in mysettings.keys()) \ or len(mysettings["PORTAGE_ELOG_MAILFROM"]) == 0: mymailfrom = "portage@localhost" else: mymailfrom = mysettings["PORTAGE_ELOG_MAILFROM"] if(not "PORTAGE_ELOG_MAILRECIPIENT" in mysettings.keys()) \ or len(mysettings["PORTAGE_ELOG_MAILRECIPIENT"]) == 0: mymailrecipient = "root@localhost" else: mymailrecipient = mysettings["PORTAGE_ELOG_MAILRECIPIENT"] mymessage = email.Message.Message() mymessage.set_unixfrom(mymailfrom) mymessage.set_payload(fulltext) mymessage["To"] = ", ".join(mymailrecipient.split(' ')) mymessage["From"] = mymailfrom mysubject = mysettings["PORTAGE_ELOG_MAILSUBJECT"] mysubject = mysubject.replace("${PACKAGE}", cpv) mysubject = mysubject.replace("${HOST}", socket.getfqdn()) mymessage["Subject"] = mysubject runcmd = "%s -f'%s' %s" % (mymailcmd, mymailfrom, mymailrecipient) cmdpipe = os.popen(runcmd, "w") cmdpipe.write(mymessage.as_string()) cmdpipe.close() return