# HG changeset patch # User Paul Boddie # Date 1414516948 -3600 # Node ID 605d701ed26261eda16606d5cf3439e3740a679a # Parent 905f90bf65996b1af218ad04ece5667b5aab8944 Added sender overriding so that manager-sent messages come from attendees. diff -r 905f90bf6599 -r 605d701ed262 imip_manager.py --- a/imip_manager.py Tue Oct 28 18:04:05 2014 +0100 +++ b/imip_manager.py Tue Oct 28 18:22:28 2014 +0100 @@ -86,8 +86,8 @@ node = to_node({self.objtype : [(self.details, {})]}) part = to_part("REPLY", [node]) - message = self.messenger.make_message([part], self.organisers) - self.messenger.sendmail(self.organisers, message.as_string()) + message = self.messenger.make_message([part], self.organisers, sender=sender) + self.messenger.sendmail(self.organisers, message.as_string(), sender=sender) # Action methods. diff -r 905f90bf6599 -r 605d701ed262 imiptools/__init__.py --- a/imiptools/__init__.py Tue Oct 28 18:04:05 2014 +0100 +++ b/imiptools/__init__.py Tue Oct 28 18:22:28 2014 +0100 @@ -86,7 +86,7 @@ if "-d" in sys.argv: print message elif self.lmtp_socket: - self.messenger.sendmail(original_recipients, message.as_string(), self.lmtp_socket) + self.messenger.sendmail(original_recipients, message.as_string(), lmtp_socket=self.lmtp_socket) # Unhandled messages are delivered as they are. @@ -94,7 +94,7 @@ if "-d" in sys.argv: print msg elif self.lmtp_socket: - self.messenger.sendmail(original_recipients, msg.as_string(), self.lmtp_socket) + self.messenger.sendmail(original_recipients, msg.as_string(), lmtp_socket=self.lmtp_socket) def process_args(self, args, stream): diff -r 905f90bf6599 -r 605d701ed262 imiptools/mail.py --- a/imiptools/mail.py Tue Oct 28 18:04:05 2014 +0100 +++ b/imiptools/mail.py Tue Oct 28 18:22:28 2014 +0100 @@ -22,12 +22,12 @@ self.subject = subject or MESSAGE_SUBJECT self.body_text = body_text or MESSAGE_TEXT - def sendmail(self, recipients, data, lmtp_socket=None): + def sendmail(self, recipients, data, sender=None, lmtp_socket=None): """ Send a mail to the given 'recipients' consisting of the given 'data', - delivering to a local mail system using LMTP if 'lmtp_socket' is - provided. + using the given 'sender' identity if indicated, delivering to a local + mail system using LMTP if 'lmtp_socket' is provided. """ if lmtp_socket: @@ -35,19 +35,22 @@ else: smtp = SMTP("localhost") - smtp.sendmail(self.sender, recipients, data) + smtp.sendmail(sender or self.sender, recipients, data) smtp.quit() - def make_message(self, parts, recipients): + def make_message(self, parts, recipients, sender=None): - "Make a message from the given 'parts' for the given 'recipients'." + """ + Make a message from the given 'parts' for the given 'recipients', using + the given 'sender' identity if indicated. + """ message = MIMEMultipart("mixed", _subparts=parts) message.preamble = self.body_text payload = message.get_payload() payload.insert(0, MIMEText(self.body_text)) - message["From"] = self.sender + message["From"] = sender or self.sender for recipient in recipients: message["To"] = recipient message["Subject"] = self.subject