return mail
headers = mail[:endpos].split("\n")
body = mail[endpos:]
+
+ headers_to_remove = [x.lower() for x in headers_to_remove]
remaining = []
add_continuation_lines = 0
+
for header in headers:
- pos = header.find(":")
- if pos == -1:
+ if header[0] in [' ','\t']:
+ # this is a continuation line
if add_continuation_lines:
remaining.append(header)
else:
+ pos = header.find(":")
+ if pos == -1:
+ # malformed message, try to remove the junk
+ add_continuation_lines = 0
+ continue
name = header[:pos].lower()
if name in headers_to_remove:
add_continuation_lines = 0
mlm = eoc.MailingListManager(DOTDIR)
self.dotdir_is_ok()
+
+class RemoveSomeHeadersTest(unittest.TestCase):
+
+ def testRemoveSomeHeaders(self):
+ mlm = eoc.MailingListManager(DOTDIR)
+ ml = eoc.MailingList(mlm, "list@example.com")
+ mail = """\
+Header-1: this is a simple header
+Header-2: this
+ is
+ a
+ complex header with a colon: yes it is
+Header-3: odd numbered headers are simple
+
+Body.
+"""
+ mail2 = ml.remove_some_headers(mail, ["Header-2"])
+ self.failUnlessEqual(mail2, """\
+Header-1: this is a simple header
+Header-3: odd numbered headers are simple
+
+Body.
+""")
+
class ListBase(unittest.TestCase):
def setUp(self):