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