Ignore:
Timestamp:
24-06-09 11:38:18 (5 years ago)
Author:
thomas
Message:
  • moap/test/test_util_mail.py:
  • moap/util/mail.py: Migrate to using email because MimeWriter? is deprecated. Slightly change the test since the message gets encoded differently, with plain text being included as 7 bit text.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/moap/util/mail.py

    r203 r401  
    1 # -*- Mode: Python -*- 
     1# -*- Mode: Python; test-case-name: moap.test.test_util_mail -*- 
    22# vi:si:et:sw=4:sts=4:ts=4 
    33 
     
    66 
    77import smtplib 
    8 import MimeWriter 
    9 import base64 
    10 import StringIO 
     8 
     9from email import encoders 
     10from email.mime import multipart, text, image, audio, base 
    1111 
    1212""" 
     
    4747        Get the message. 
    4848        """ 
     49        COMMASPACE = ', ' 
    4950 
    50         message = StringIO.StringIO() 
    51         writer = MimeWriter.MimeWriter(message) 
    52         writer.addheader('MIME-Version', '1.0') 
    53         writer.addheader('Subject', self.subject) 
    54         writer.addheader('To', ", ".join(self.to)) 
    55  
    56         writer.startmultipartbody('mixed') 
    57  
    58         # start off with a text/plain part 
    59         part = writer.nextpart() 
    60         body = part.startbody('text/plain') 
    61         body.write(self.content) 
     51        # Create the container (outer) email message. 
     52        msg = multipart.MIMEMultipart() 
     53        msg['Subject'] = self.subject 
     54        msg['From'] = self.fromm 
     55        msg['To'] = COMMASPACE.join(self.to) 
     56        msg.preamble = self.content 
    6257 
    6358        # add attachments 
    6459        for a in self.attachments: 
    65             part = writer.nextpart() 
    66             part.addheader('Content-Transfer-Encoding', 'base64') 
    67             body = part.startbody('%(mime)s; name=%(name)s' % a) 
    68             body.write(base64.encodestring(a['content'])) 
     60            maintype, subtype = a['mime'].split('/', 1) 
     61            if maintype == 'text': 
     62                attach = text.MIMEText(a['content'], _subtype=subtype) 
     63            elif maintype == 'image': 
     64                attach = image.MIMEImage(a['content'], _subtype=subtype) 
     65            elif maintype == 'audio': 
     66                attach = audio.MIMEAudio(a['content'], _subtype=subtype) 
     67            else: 
     68                attach = base.MIMEBase(maintype, subtype) 
     69                attach.set_payload(a['content']) 
     70                # Encode the payload using Base64 
     71                encoders.encode_base64(msg) 
     72            # Set the filename parameter 
     73            attach.add_header( 
     74                'Content-Disposition', 'attachment', filename=a['name']) 
     75            msg.attach(attach) 
     76             
     77        return msg.as_string() 
    6978 
    70         # finish off 
    71         writer.lastpart() 
    72  
    73         return message.getvalue() 
    7479 
    7580    def send(self, server="localhost"): 
     
    7984 
    8085        return result 
     86 
     87 
Note: See TracChangeset for help on using the changeset viewer.