1 #!/usr/bin/env python 2 3 from email.mime.message import MIMEMessage 4 from email.mime.multipart import MIMEMultipart 5 from email.mime.text import MIMEText 6 from smtplib import LMTP, SMTP 7 8 MESSAGE_SENDER = "resources+agent@example.com" 9 10 MESSAGE_SUBJECT = "Calendar system message" 11 12 MESSAGE_TEXT = """\ 13 This is a response to a calendar message sent by your calendar program. 14 """ 15 16 class Messenger: 17 18 "Sending of outgoing messages." 19 20 def __init__(self, sender=None, subject=None, body_text=None): 21 self.sender = sender or MESSAGE_SENDER 22 self.subject = subject or MESSAGE_SUBJECT 23 self.body_text = body_text or MESSAGE_TEXT 24 25 def sendmail(self, recipients, data, lmtp_socket=None): 26 27 """ 28 Send a mail to the given 'recipients' consisting of the given 'data', 29 delivering to a local mail system using LMTP if 'lmtp_socket' is 30 provided. 31 """ 32 33 if lmtp_socket: 34 smtp = LMTP(lmtp_socket) 35 else: 36 smtp = SMTP("localhost") 37 38 smtp.sendmail(self.sender, recipients, data) 39 smtp.quit() 40 41 def make_message(self, parts, recipients): 42 43 "Make a message from the given 'parts' for the given 'recipients'." 44 45 message = MIMEMultipart("mixed", _subparts=parts) 46 message.preamble = self.body_text 47 payload = message.get_payload() 48 payload.insert(0, MIMEText(self.body_text)) 49 50 message["From"] = self.sender 51 for recipient in recipients: 52 message["To"] = recipient 53 message["Subject"] = self.subject 54 55 return message 56 57 def wrap_message(self, msg, parts): 58 59 "Wrap 'msg' and provide the given 'parts' as the primary content." 60 61 message = MIMEMultipart("mixed", _subparts=parts) 62 message.preamble = self.body_text 63 message.get_payload().append(MIMEMessage(msg)) 64 65 message["From"] = msg["From"] 66 message["To"] = msg["To"] 67 message["Subject"] = msg["Subject"] 68 69 return message 70 71 # vim: tabstop=4 expandtab shiftwidth=4