|
1 import mimetools |
|
2 import multifile |
|
3 import cStringIO |
|
4 |
|
5 msg = """Mime-Version: 1.0 |
|
6 Content-Type: multipart/mixed; |
|
7 boundary="=====================_590453667==_" |
|
8 X-OriginalArrivalTime: 05 Feb 2002 03:43:23.0310 (UTC) FILETIME=[42D88CE0:01C1ADF7] |
|
9 |
|
10 --=====================_590453667==_ |
|
11 Content-Type: multipart/alternative; |
|
12 boundary="=====================_590453677==_.ALT" |
|
13 |
|
14 --=====================_590453677==_.ALT |
|
15 Content-Type: text/plain; charset="us-ascii"; format=flowed |
|
16 |
|
17 test A |
|
18 --=====================_590453677==_.ALT |
|
19 Content-Type: text/html; charset="us-ascii" |
|
20 |
|
21 <html> |
|
22 <b>test B</font></b></html> |
|
23 |
|
24 --=====================_590453677==_.ALT-- |
|
25 |
|
26 --=====================_590453667==_ |
|
27 Content-Type: text/plain; charset="us-ascii" |
|
28 Content-Disposition: attachment; filename="att.txt" |
|
29 |
|
30 Attached Content. |
|
31 Attached Content. |
|
32 Attached Content. |
|
33 Attached Content. |
|
34 |
|
35 --=====================_590453667==_-- |
|
36 |
|
37 """ |
|
38 |
|
39 def getMIMEMsg(mf): |
|
40 global boundaries, linecount |
|
41 msg = mimetools.Message(mf) |
|
42 |
|
43 #print "TYPE: %s" % msg.gettype() |
|
44 if msg.getmaintype() == 'multipart': |
|
45 boundary = msg.getparam("boundary") |
|
46 boundaries += 1 |
|
47 |
|
48 mf.push(boundary) |
|
49 while mf.next(): |
|
50 getMIMEMsg(mf) |
|
51 mf.pop() |
|
52 else: |
|
53 lines = mf.readlines() |
|
54 linecount += len(lines) |
|
55 |
|
56 def test_main(): |
|
57 global boundaries, linecount |
|
58 boundaries = 0 |
|
59 linecount = 0 |
|
60 f = cStringIO.StringIO(msg) |
|
61 getMIMEMsg(multifile.MultiFile(f)) |
|
62 assert boundaries == 2 |
|
63 assert linecount == 9 |
|
64 |
|
65 if __name__ == '__main__': |
|
66 test_main() |