# HG changeset patch # User Paul Boddie # Date 1414255561 -7200 # Node ID ae4dfd0a239d8aeda4827e45a0289ea0b6610114 # Parent b57bf0cebf99df300ffd836f15784c2300bb68b0 Wrap delivered messages as message/rfc822 parts in multipart/mixed messages. diff -r b57bf0cebf99 -r ae4dfd0a239d imiptools/__init__.py --- a/imiptools/__init__.py Sat Oct 25 17:53:34 2014 +0200 +++ b/imiptools/__init__.py Sat Oct 25 18:46:01 2014 +0200 @@ -1,6 +1,7 @@ #!/usr/bin/env python from email import message_from_file +from email.mime.message import MIMEMessage from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from smtplib import LMTP, SMTP @@ -103,12 +104,12 @@ # Forward messages to their recipients using the existing message. if forwarded_parts: - msg.get_payload()[:0] = forwarded_parts + message = self.wrap_message(msg, forwarded_parts) if "-d" in sys.argv: - print msg + print message elif self.lmtp_socket: - sendmail(self.sender, original_recipients, msg.as_string(), self.lmtp_socket) + sendmail(self.sender, original_recipients, message.as_string(), self.lmtp_socket) # Unhandled messages are delivered as they are. @@ -134,6 +135,20 @@ return message + def wrap_message(self, msg, parts): + + "Wrap 'msg' and provide the given 'parts' as the primary content." + + message = MIMEMultipart("mixed", _subparts=parts) + message.preamble = self.body_text + message.get_payload().append(MIMEMessage(msg)) + + message["From"] = msg["From"] + message["To"] = msg["To"] + message["Subject"] = msg["Subject"] + + return message + def process_args(self, args, stream): """