def construct_email_message(sender, to_list, cc_list, subject, mtext, attachment_list): """ # """ outer = MIMEMultipart() outer['From'] = sender outer['To'] = ', '.join(to_list) outer['Cc'] = ', '.join(cc_list) outer['Subject'] = subject outer.preample = 'You will not see this in a MIME-aware mail reader.\n' outer.epilogue = '' # plain text body msg = MIMEText(mtext + '\n\n') msg.add_header('Content-Disposition', 'inline') outer.attach(msg) # file attachments # outer.add_header('Content-Transfer-Encoding', 'base64') for att in attachment_list: if not os.path.isfile(att): continue ctype, encoding = mimetypes.guess_type(att) maintype, subtype = ctype.split('/', 1) fp = open(att, 'rb') msg = MIMEBase(maintype, subtype) # msg = MIMEBase('application', 'octet-stream') msg.set_payload(fp.read()) Encoders.encode_base64(msg) basename = att.split('/')[-1] msg.add_header('Content-Disposition', 'attachment', filename=basename) outer.attach(msg) return outer