40 |
|
|
41 |
storeMail(header + '\r\n' + body, mediaserver) |
storeMail(header + '\r\n' + body, mediaserver) |
42 |
|
|
43 |
|
def delHeaderLines(header, fields): |
44 |
|
"""Takes a list of header-lines and a list of header fields and |
45 |
|
removes every appereance of this field and it's parameters. |
46 |
|
""" |
47 |
|
result = [] |
48 |
|
delLines = 0 |
49 |
|
foundField = 0 |
50 |
|
for line in header: |
51 |
|
tline = line.lower() |
52 |
|
for field in fields: |
53 |
|
field = field.lower() |
54 |
|
if tline[:len(field)] == field: |
55 |
|
foundField = 1 |
56 |
|
break |
57 |
|
if foundField: |
58 |
|
foundField = 0 |
59 |
|
delLines = 1 |
60 |
|
elif not (delLines and line[0] == ' '): |
61 |
|
result.append(line) |
62 |
|
delLines = 0 |
63 |
|
return result |
64 |
|
|
65 |
|
def transformHeader(header, bodyID): |
66 |
|
result = [] |
67 |
|
idstring = 'storm:block:' + bodyID.getString() |
68 |
|
|
69 |
|
result.append('Content-Type: message/external-body;\r\n') |
70 |
|
result.append(' access-type=\"x-storm\";\r\n') |
71 |
|
result.append(' block=\"' + idstring + '\"\r\n\r\n') |
72 |
|
|
73 |
|
headers = delHeaderLines (header, ['Content-Transfer-Encoding']) |
74 |
|
result = result + headers |
75 |
|
result.append('Content-Transfer-Encoding: binary\r\n') |
76 |
|
result.append('Content-ID: ' + idstring + '\r\n\r\n') |
77 |
|
|
78 |
|
return result |
79 |
|
|
80 |
|
|
81 |
def storeMail(mail, mediaserver): |
def storeMail(mail, mediaserver): |
82 |
mail = re.sub('(\r\n|\n)', '\r\n', mail) |
mail = re.sub('(\r\n|\n)', '\r\n', mail) |
83 |
mail = StringIO.StringIO(mail) |
mail = StringIO.StringIO(mail) |
110 |
headerLinesB.add('Message-ID: ' + msgID) |
headerLinesB.add('Message-ID: ' + msgID) |
111 |
headerLinesB.add('Content-Transfer-Encoding: ' + submsg.getencoding()) |
headerLinesB.add('Content-Transfer-Encoding: ' + submsg.getencoding()) |
112 |
|
|
113 |
id = '<ID>' |
body = string.join(submsg.fp.readlines(), '') |
114 |
headerData += '--' + msg.getparam("boundary") + '\r\n' |
id = mediaserver.addDatum(body, headerLinesB, None, 0) |
115 |
|
|
116 |
headerData += 'Content-Type: message/external-body;\r\n' |
header = ['--', msg.getparam("boundary") + '\r\n'] |
117 |
headerData += ' access-type=\"x-storm\";\r\n' |
header = header + transformHeader(submsg.headers, id) |
118 |
headerData += ' block=\"' + id + '\"\r\n\r\n' |
header = string.join(header, '') |
|
|
|
|
headerData += string.join(submsg.headers, '') |
|
|
headerData += 'Content-Transfer-Encoding: binary\r\n' |
|
|
headerData += 'Content-ID: ' + id + '\r\n\r\n' |
|
119 |
|
|
120 |
body = string.join(submsg.fp.readlines(), '') |
headerData += header |
|
mediaserver.addDatum(body, headerLinesB, None, 0) |
|
121 |
|
|
122 |
headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n' |
headerData += '--' + msg.getparam("boundary") + '--\r\n\r\n' |
123 |
mediaserver.addDatum(headerData, headerLinesH, None, 0) |
mediaserver.addDatum(headerData, headerLinesH, None, 0) |
130 |
headerLinesB.add('Message-ID: ' + msgID) |
headerLinesB.add('Message-ID: ' + msgID) |
131 |
headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding()) |
headerLinesB.add('Content-Transfer-Encoding: ' + msg.getencoding()) |
132 |
|
|
133 |
id = '<ID>' |
body = string.join(msg.fp.readlines(), '') |
134 |
|
id = mediaserver.addDatum(body, headerLinesB, None, 0) |
135 |
|
|
136 |
headerA = 'Content-Type: message/external-body;\r\n' |
header = string.join(transformHeader(msg.headers, id), '') |
|
headerA += ' access-type=\"x-storm\";\r\n' |
|
|
headerA += ' block=\"' + id + '\"\r\n' |
|
|
|
|
|
mailHeader = string.join(msg.headers, '') |
|
|
mailHeader += 'Content-Type: ' + msgtype + '\r\n' |
|
|
mailHeader += 'Content-Transfer-Encoding: binary\r\n' |
|
|
mailHeader += 'Content-ID: ' + id + '\r\n' |
|
|
|
|
|
mediaserver.addDatum(headerA + '\r\n' |
|
|
+ mailHeader + '\r\n', |
|
|
headerLinesH, None, 0) |
|
137 |
|
|
138 |
body = string.join(msg.fp.readlines(), '') |
mediaserver.addDatum(header, headerLinesH, None, 0) |
139 |
mediaserver.addDatum(body, headerLinesB, None, 0) |
mail.close() |