diff options
author | Mark Sapiro <mark@msapiro.net> | 2014-05-06 09:35:47 -0700 |
---|---|---|
committer | Mark Sapiro <mark@msapiro.net> | 2014-05-06 09:35:47 -0700 |
commit | f3b2c2c7523b5962164672b5b5889c2eb85aca0a (patch) | |
tree | d97759d48a6b83b30a6c9b22e08dc7feb271ec38 /Mailman/Message.py | |
parent | d3ffb15770a927597b16bebc3719b5e690f7395b (diff) | |
download | mailman2-f3b2c2c7523b5962164672b5b5889c2eb85aca0a.tar.gz mailman2-f3b2c2c7523b5962164672b5b5889c2eb85aca0a.tar.xz mailman2-f3b2c2c7523b5962164672b5b5889c2eb85aca0a.zip |
A critical incompatibility between the DMARC Wrap Message action and
Python versions older than 2.6.x for some x <= 5 existed and caused
Wrapped message to be shunted. This is fixed. (LP: #1316682)
Diffstat (limited to '')
-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): |