_mailer.py

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· Python 代码 · 共 107 行

PY
107
字号
""" This module implements a mailer to mail a user about fuzz warnings """import _singletondef ldap_lookup (username):    """ Performs a ldap lookup to find the email address associated with        username.  If none exists, it returns the empty string."""    import ldap    try:        conn = ldap.open ("ldap.dre.vanderbilt.edu")        conn.protocol_version = ldap.VERSION3        baseDN = "dc=dre,dc=vanderbilt,dc=edu"        scope = ldap.SCOPE_SUBTREE        attrFilter = None        searchFilter = "uid=" + username        result = conn.search (baseDN, scope, searchFilter, attrFilter)        result_type, result_data = conn.result (result, 0)        email = ""        if (result_data != []) and (result_type == ldap.RES_SEARCH_ENTRY):            # we have a valid result!            if (result_data[0][1].has_key ('mail')):                email = result_data[0][1]['mail'][0]            elif (result_data[0][1].has_key ('svnmail')):                email = result_data[0][1]['svnmail'][0]            else:                email = ""        conn.unbind ()        return email    except:        # Some error occurred when looking this guy up.        return ""                                class Mailer:    def __init__ (self):        self.recipient = ""        self.body = """\This is an automatically generated message from the fuzz check systemin the subversion repository.Your recent commit to the ACE/TAO/CIAO repository had a number of warningswhich should be addressed."""        self.warnings  = ""        self.subject = "Your recent commit to the DOC group repository."        self.sent = False    def get_messages (self):        return self.warnings    def open (self, ldap_user_name):        from sys import stderr        stderr.write ("LDAP Name: " + ldap_user_name.rstrip () + "\n")        self.recipient = ldap_lookup (ldap_user_name.rstrip ())    def add_warning (self, warning_text):        self.warnings += warning_text    def close (self):        try:            message = """\From: %sTo: %sSubject: %s\r\n%s"""         % ("bczar@dre.vanderbilt.edu",               self.recipient,               self.subject,               self.body + self.warnings)                        print message                        import smtplib            server = smtplib.SMTP('discovery.isis.vanderbilt.edu')            server.sendmail ("bczar@dre.vanderbilt.edu",                             [self.recipient],                             message)        except smtplib.SMTPRecipientsRefused:            print "Recipients refused exception"            server.close ()        except smtplib.SMTPHeloError:            print "Helo error"            server.close ()        except smtplib.SMTPSenderRefused:            print "Sender refused"            server.close ()        except smtplib.SMTPDataError:            print "Data error"            server.close ()        except:            from sys import stderr            stderr.write ("Caught exception while sending email\n")            server.close ()    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?