65 |
delLines = 0 |
delLines = 0 |
66 |
return result |
return result |
67 |
|
|
68 |
|
def replaceHeaderLine(header, field, replacement): |
69 |
|
result = delHeaderLines(header, [field]) |
70 |
|
result.append(replacement) |
71 |
|
return result |
72 |
|
|
73 |
def transformHeader(header, bodyID): |
def transformHeader(header, bodyID): |
74 |
"""Transforms message header to a message/external-body header |
"""Transforms message header to a message/external-body header |
75 |
""" |
""" |
80 |
result.append(' access-type=\"x-storm\";\r\n') |
result.append(' access-type=\"x-storm\";\r\n') |
81 |
result.append(' block=\"' + idstring + '\"\r\n\r\n') |
result.append(' block=\"' + idstring + '\"\r\n\r\n') |
82 |
|
|
83 |
headers = delHeaderLines (header, ['Content-Transfer-Encoding']) |
header = replaceHeaderLine(header, 'Content-Transfer-Encoding', 'Content-Transfer-Encoding: binary\r\n') |
84 |
result = result + headers |
header = replaceHeaderLine(header, 'Content-ID', 'Content-ID: ' + idstring + '\r\n\r\n') |
85 |
result.append('Content-Transfer-Encoding: binary\r\n') |
#headers = delHeaderLines (header, ['Content-Transfer-Encoding']) |
86 |
result.append('Content-ID: ' + idstring + '\r\n\r\n') |
#result = result + headers |
87 |
|
#result.append('Content-Transfer-Encoding: binary\r\n') |
88 |
return result |
#result.append('Content-ID: ' + idstring + '\r\n\r\n') |
89 |
|
return result + header |
90 |
|
|
91 |
def getCharset(msg): |
def getCharset(msg): |
92 |
for param in msg.getplist(): |
if msg.getparam("charset") == None: |
93 |
if param[0:7] == 'charset': |
return "us-ascii" |
94 |
return param[8:] |
else: |
95 |
|
return msg.getparam("charset") |
96 |
|
|
97 |
return "us-ascii" |
#for param in msg.getplist(): |
98 |
|
# if param[0:7] == 'charset': |
99 |
|
# return param[8:] |
100 |
|
# |
101 |
|
# return "us-ascii" |
102 |
|
|
103 |
def getContentTypeParams(msg): |
def getContentTypeParams(msg): |
104 |
ctparams = [] |
ctparams = [] |
109 |
def storeMail(mail, mediaserver): |
def storeMail(mail, mediaserver): |
110 |
mail = re.sub(r'(\r\n|\r|\n)', '\r\n', mail) |
mail = re.sub(r'(\r\n|\r|\n)', '\r\n', mail) |
111 |
tMail = StringIO.StringIO(mail) |
tMail = StringIO.StringIO(mail) |
112 |
tMail = mimetools.Message(tMail) |
tMsg = mimetools.Message(tMail) |
113 |
mail = StringIO.StringIO(mail) |
mail = StringIO.StringIO(mail) |
114 |
msg = mimetools.Message(mail) |
msg = mimetools.Message(mail) |
115 |
msgtype = msg.gettype() |
msgtype = msg.gettype() |
118 |
|
|
119 |
headerLines = java.util.ArrayList() |
headerLines = java.util.ArrayList() |
120 |
headerLines.add('Content-Type: message/rfc822') |
headerLines.add('Content-Type: message/rfc822') |
121 |
tempstore = mediaserver.addDatum(string.join(tMail.headers, '') |
tempstore = mediaserver.addDatum(string.join(tMsg.headers, '') |
122 |
+ '\r\n' + tMail.fp.read(), headerLines, None, 0) |
+ '\r\n' + tMsg.fp.read(), headerLines, None, 0) |
123 |
|
|
124 |
if msgtype[:10] == "multipart/": |
if msgtype[:10] == "multipart/": |
125 |
headerLinesH = java.util.ArrayList() |
headerLinesH = java.util.ArrayList() |
181 |
print eis.getBody().makeString() |
print eis.getBody().makeString() |
182 |
print "----" |
print "----" |
183 |
mail.close() |
mail.close() |
184 |
|
tMail.close() |
185 |
return id2 |
return id2 |
186 |
|
|
187 |
def isConvertible(body, charset): |
def isConvertible(body, charset): |
203 |
return 1 |
return 1 |
204 |
|
|
205 |
def isReconstructable(mediaserver, msid, recid): |
def isReconstructable(mediaserver, msid, recid): |
206 |
|
mail = str(java.lang.String(mediaserver.getDatum(msid).getBytes(), "us-ascii")) |
207 |
|
#mail = StringIO.StringIO(mail) |
208 |
|
#msg = mimetools.Message(mail) |
209 |
|
t = java.lang.String(mediaserver.getDatum(recid).getBytes(), "UTF8") |
210 |
|
|
211 |
|
print "--------\n-------\n%s-------\n--------\n" % \ |
212 |
|
msgZip (reconstruct(mail, mediaserver), str(t)) |
213 |
|
|
214 |
|
# print "\t\t\t", msg.getparam("access-type") |
215 |
|
# if msg.gettype() == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm": |
216 |
|
# id = msg.getparam("block")[len("storm:block:"):] |
217 |
|
# id = gzz.mediaserver.Mediaserver.Id(id) |
218 |
|
|
219 |
|
#print "Reconstruct==>" |
220 |
|
#print msg |
221 |
|
#print "<==Reconstruct" |
222 |
|
#mail.close() |
223 |
return 1 |
return 1 |
224 |
|
|
225 |
|
def msgZip(msg1, msg2): |
226 |
|
msg1 = string.split(msg1, '\r\n') |
227 |
|
msg2 = string.split(msg2, '\r\n') |
228 |
|
|
229 |
|
ret = "" |
230 |
|
for s in zip(msg1, msg2): |
231 |
|
ret += s[0] + '\n' |
232 |
|
ret += s[1] + '\n' |
233 |
|
|
234 |
|
return ret |
235 |
|
|
236 |
|
def reconstruct(mail, mediaserver): |
237 |
|
mail = StringIO.StringIO(mail) |
238 |
|
msg = mimetools.Message(mail) |
239 |
|
type = msg.gettype() |
240 |
|
|
241 |
|
if type == "message/external-body" and string.lower(msg.getparam("access-type")) == "x-storm": |
242 |
|
id = msg.getparam("block")[len("storm:block:"):] |
243 |
|
id = gzz.mediaserver.Mediaserver.Id(id) |
244 |
|
t = java.lang.String(mediaserver.getDatum(id).getBytes(), "UTF8") # Noch den Zeichensatz umwandeln |
245 |
|
msgData = msg.fp.read() + str(t) |
246 |
|
elif type[:10] == "multipart/": |
247 |
|
mulmsg = multifile.MultiFile(mail, 0) |
248 |
|
mulmsg.push(msg.getparam("boundary")) |
249 |
|
|
250 |
|
msgData = "--%s" % msg.getparam("boundary") |
251 |
|
|
252 |
|
while mulmsg.next(): |
253 |
|
submsg = mimetools.Message(mulmsg) |
254 |
|
msgData += reconstruct(str(submsg) + submsg.fp.read(), mediaserver) |
255 |
|
|
256 |
|
msgData += "--%s--" % msg.getparam("boundary") |
257 |
|
else: |
258 |
|
msgData = str(msg) + '\r\n' + msg.fp.read() |
259 |
|
|
260 |
|
mail.close() |
261 |
|
return msgData |
262 |
|
|
263 |
def storeBody(mediaserver, msg, body, msgID): |
def storeBody(mediaserver, msg, body, msgID): |
264 |
msgtype = msg.gettype() |
msgtype = msg.gettype() |
265 |
ctparams = getContentTypeParams(msg) |
ctparams = getContentTypeParams(msg) |