Ignore:
Timestamp:
20 Dec 2011, 07:39:33 (13 years ago)
Author:
Henrik Bettermann
Message:

Define send_mail function and move sendCredentials code from browser.py to utils.py.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.sirp/trunk/src/waeup/sirp/utils/utils.py

    r7382 r7399  
    2727from email.Header import Header
    2828from email.Utils import parseaddr, formataddr
     29
     30def send_mail(from_name,from_email,rcpt_name,rcpt_email,subject,body,config):
     31
     32    header_charset = 'ISO-8859-1'
     33    from_ = '%s <%s>' % (from_name,from_email)
     34    to_ = '%s <%s>' % (rcpt_name,rcpt_email)
     35    from_name, from_addr = parseaddr(from_)
     36    rcpt_name, rcpt_addr = parseaddr(to_)
     37    from_name = str(Header(unicode(from_name), header_charset))
     38    rcpt_name = str(Header(unicode(rcpt_name), header_charset))
     39    from_addr = from_addr.encode('ascii')
     40    rpct_addr = rcpt_addr.encode('ascii')
     41
     42    for body_charset in ['US-ASCII', 'ISO-8859-1', 'UTF-8']:
     43        try:
     44            body.encode(body_charset)
     45        except UnicodeError:
     46            print "FAILED: ", body_charset, text
     47            pass
     48        else:
     49            break
     50
     51    msg = MIMEText(body.encode(body_charset), 'plain', body_charset)
     52    msg['From'] = formataddr((from_name, from_addr))
     53    msg['To'] = formataddr((rcpt_name, rcpt_addr))
     54    msg['Subject'] = Header(unicode(subject), header_charset)
     55    server = smtplib.SMTP(config.smtp_server)
     56    if config.smtp_requires_login:
     57        server.login(config.smtp_username,config.smtp_password)
     58    try:
     59        server.sendmail(from_email,rcpt_email,msg.as_string())
     60    except Exception, e:
     61        # XXX: log error message
     62        return False
     63    server.quit()
     64    return True
    2965
    3066
     
    72108        return ''.join([r().choice(chars) for i in range(length)])
    73109
    74     def sendPassword(self,fullname,msg,username,password,login_url,
    75                  email_to,subject):
    76         """Send an email with user credentials.
     110
     111    def sendCredentials(self, applicant, password, login_url):
     112        """Send credentials as email.
     113
     114        Input is the applicant for which credentials are sent and the
     115        password.
     116
     117        Returns True or False to indicate successful operation.
    77118
    78119        XXX: While this method is unicode-proof (i.e. it can handle
     
    81122             reorganization of SMPT-related code is needed here.
    82123        """
    83         config = grok.getSite()['configuration']
    84         header_charset = 'ISO-8859-1'
     124        username = applicant.applicant_id
     125        subject = 'Your SIRP credentials'
     126        msg = 'You have successfully been registered for the'
    85127        text = """Dear %s,
    86128
     
    100142Regards
    101143"""
    102         from_ = '%s <%s>' % (config.name_admin,config.email_admin)
    103         from_name, from_addr = parseaddr(from_)
    104         rcpt_name, rcpt_addr = parseaddr(email_to)
    105         from_name = str(Header(unicode(from_name), header_charset))
    106         rcpt_name = str(Header(unicode(rcpt_name), header_charset))
    107         from_addr = from_addr.encode('ascii')
    108         rpct_addr = rcpt_addr.encode('ascii')
     144        config = grok.getSite()['configuration']
     145        from_name = config.name_admin
     146        from_email = config.email_admin
     147        rcpt_name = applicant.display_fullname
     148        rcpt_email = applicant.email
     149        body = text % (
     150                rcpt_name, msg,config.name,username,password,login_url)
     151        return send_mail(
     152            from_name,from_email,rcpt_name,rcpt_email,subject,body,config)
    109153
    110         body = text % (
    111                 fullname, msg,config.name,username,password,login_url)
    112         for body_charset in ['US-ASCII', 'ISO-8859-1', 'UTF-8']:
    113             try:
    114                 body.encode(body_charset)
    115             except UnicodeError:
    116                 print "FAILED: ", body_charset, text
    117                 pass
    118             else:
    119                 break
    120154
    121         msg = MIMEText(body.encode(body_charset), 'plain', body_charset)
    122         msg['From'] = formataddr((from_name, from_addr))
    123         msg['To'] = formataddr((rcpt_name, rcpt_addr))
    124         msg['Subject'] = Header(unicode(subject), header_charset)
    125         server = smtplib.SMTP(config.smtp_server)
    126         if config.smtp_requires_login:
    127             server.login(config.smtp_username,config.smtp_password)
    128         try:
    129             server.sendmail(config.email_admin,email_to,msg.as_string())
    130         except Exception, e:
    131             # XXX: log error message
    132             return False
    133         server.quit()
    134         return True
     155
Note: See TracChangeset for help on using the changeset viewer.