diff options
Diffstat (limited to 'Mailman/Message.py')
-rw-r--r-- | Mailman/Message.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/Mailman/Message.py b/Mailman/Message.py index 5d68e7ef..20610dc7 100644 --- a/Mailman/Message.py +++ b/Mailman/Message.py @@ -59,6 +59,25 @@ class Generator(email.Generator.Generator): return self.__class__(fp, self._mangle_from_, self.__children_maxheaderlen, self.__children_maxheaderlen) + # This is the _handle_message method with the fix for bug 7970. + def _handle_message(self, msg): + s = StringIO() + g = self.clone(s) + # The payload of a message/rfc822 part should be a multipart sequence + # of length 1. The zeroth element of the list should be the Message + # object for the subpart. Extract that object, stringify it, and + # write it out. + # Except, it turns out, when it's a string instead, which happens when + # and only when HeaderParser is used on a message of mime type + # message/rfc822. Such messages are generated by, for example, + # Groupwise when forwarding unadorned messages. (Issue 7970.) So + # in that case we just emit the string body. + payload = msg.get_payload() + if isinstance(payload, list): + g.flatten(msg.get_payload(0), unixfrom=False) + payload = s.getvalue() + self._fp.write(payload) + class Message(email.Message.Message): |