address commands. See manual page for more information.
"""
-VERSION = "1.1.5"
+VERSION = "1.2.1"
PLUGIN_INTERFACE_VERSION = "1"
import getopt
return True
def mime_encode_headers(self, text):
- headers, body = text.split("\n\n", 1)
-
- list = []
- for line in headers.split("\n"):
- if line[0].isspace():
- list[-1] += line
- else:
- list.append(line)
-
- headers = []
- for header in list:
- if self.nice_7bit(header):
- headers.append(header)
- else:
- if ": " in header:
- name, content = header.split(": ", 1)
+ try:
+ headers, body = text.split("\n\n", 1)
+
+ list = []
+ for line in headers.split("\n"):
+ if line[0].isspace():
+ list[-1] += line
else:
- name, content = header.split(":", 1)
- hdr = email.Header.Header(content, "utf-8")
- headers.append(name + ": " + hdr.encode())
-
- return "\n".join(headers) + "\n\n" + body
+ list.append(line)
+
+ headers = []
+ for header in list:
+ if self.nice_7bit(header):
+ headers.append(header)
+ else:
+ if ": " in header:
+ name, content = header.split(": ", 1)
+ else:
+ name, content = header.split(":", 1)
+ hdr = email.Header.Header(content, "utf-8")
+ headers.append(name + ": " + hdr.encode())
+
+ return "\n".join(headers) + "\n\n" + body
+ except:
+ error("Cannot MIME encode header, using original ones, sorry")
+ return text
def template(self, template_name, dict):
lang = self.cp.get("list", "language")
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
if "base64" in text or "BASE64" in text:
import StringIO
for line in StringIO.StringIO(text):
- if line.lower.beginswith("content-transfer-encoding:") and \
+ if line.lower().startswith("content-transfer-encoding:") and \
"base64" in line.lower():
return text
return text + self.template("footer", {})