1 | # Copyright (C) 2001-2006 Python Software Foundation
|
---|
2 | # Author: Barry Warsaw
|
---|
3 | # Contact: email-sig@python.org
|
---|
4 |
|
---|
5 | """A package for parsing, handling, and generating email messages."""
|
---|
6 |
|
---|
7 | __version__ = '4.0.3'
|
---|
8 |
|
---|
9 | __all__ = [
|
---|
10 | # Old names
|
---|
11 | 'base64MIME',
|
---|
12 | 'Charset',
|
---|
13 | 'Encoders',
|
---|
14 | 'Errors',
|
---|
15 | 'Generator',
|
---|
16 | 'Header',
|
---|
17 | 'Iterators',
|
---|
18 | 'Message',
|
---|
19 | 'MIMEAudio',
|
---|
20 | 'MIMEBase',
|
---|
21 | 'MIMEImage',
|
---|
22 | 'MIMEMessage',
|
---|
23 | 'MIMEMultipart',
|
---|
24 | 'MIMENonMultipart',
|
---|
25 | 'MIMEText',
|
---|
26 | 'Parser',
|
---|
27 | 'quopriMIME',
|
---|
28 | 'Utils',
|
---|
29 | 'message_from_string',
|
---|
30 | 'message_from_file',
|
---|
31 | # new names
|
---|
32 | 'base64mime',
|
---|
33 | 'charset',
|
---|
34 | 'encoders',
|
---|
35 | 'errors',
|
---|
36 | 'generator',
|
---|
37 | 'header',
|
---|
38 | 'iterators',
|
---|
39 | 'message',
|
---|
40 | 'mime',
|
---|
41 | 'parser',
|
---|
42 | 'quoprimime',
|
---|
43 | 'utils',
|
---|
44 | ]
|
---|
45 |
|
---|
46 |
|
---|
47 | |
---|
48 |
|
---|
49 | # Some convenience routines. Don't import Parser and Message as side-effects
|
---|
50 | # of importing email since those cascadingly import most of the rest of the
|
---|
51 | # email package.
|
---|
52 | def message_from_string(s, *args, **kws):
|
---|
53 | """Parse a string into a Message object model.
|
---|
54 |
|
---|
55 | Optional _class and strict are passed to the Parser constructor.
|
---|
56 | """
|
---|
57 | from email.parser import Parser
|
---|
58 | return Parser(*args, **kws).parsestr(s)
|
---|
59 |
|
---|
60 |
|
---|
61 | def message_from_file(fp, *args, **kws):
|
---|
62 | """Read a file and parse its contents into a Message object model.
|
---|
63 |
|
---|
64 | Optional _class and strict are passed to the Parser constructor.
|
---|
65 | """
|
---|
66 | from email.parser import Parser
|
---|
67 | return Parser(*args, **kws).parse(fp)
|
---|
68 |
|
---|
69 |
|
---|
70 | |
---|
71 |
|
---|
72 | # Lazy loading to provide name mapping from new-style names (PEP 8 compatible
|
---|
73 | # email 4.0 module names), to old-style names (email 3.0 module names).
|
---|
74 | import sys
|
---|
75 |
|
---|
76 | class LazyImporter(object):
|
---|
77 | def __init__(self, module_name):
|
---|
78 | self.__name__ = 'email.' + module_name
|
---|
79 |
|
---|
80 | def __getattr__(self, name):
|
---|
81 | __import__(self.__name__)
|
---|
82 | mod = sys.modules[self.__name__]
|
---|
83 | self.__dict__.update(mod.__dict__)
|
---|
84 | return getattr(mod, name)
|
---|
85 |
|
---|
86 |
|
---|
87 | _LOWERNAMES = [
|
---|
88 | # email.<old name> -> email.<new name is lowercased old name>
|
---|
89 | 'Charset',
|
---|
90 | 'Encoders',
|
---|
91 | 'Errors',
|
---|
92 | 'FeedParser',
|
---|
93 | 'Generator',
|
---|
94 | 'Header',
|
---|
95 | 'Iterators',
|
---|
96 | 'Message',
|
---|
97 | 'Parser',
|
---|
98 | 'Utils',
|
---|
99 | 'base64MIME',
|
---|
100 | 'quopriMIME',
|
---|
101 | ]
|
---|
102 |
|
---|
103 | _MIMENAMES = [
|
---|
104 | # email.MIME<old name> -> email.mime.<new name is lowercased old name>
|
---|
105 | 'Audio',
|
---|
106 | 'Base',
|
---|
107 | 'Image',
|
---|
108 | 'Message',
|
---|
109 | 'Multipart',
|
---|
110 | 'NonMultipart',
|
---|
111 | 'Text',
|
---|
112 | ]
|
---|
113 |
|
---|
114 | for _name in _LOWERNAMES:
|
---|
115 | importer = LazyImporter(_name.lower())
|
---|
116 | sys.modules['email.' + _name] = importer
|
---|
117 | setattr(sys.modules['email'], _name, importer)
|
---|
118 |
|
---|
119 |
|
---|
120 | import email.mime
|
---|
121 | for _name in _MIMENAMES:
|
---|
122 | importer = LazyImporter('mime.' + _name.lower())
|
---|
123 | sys.modules['email.MIME' + _name] = importer
|
---|
124 | setattr(sys.modules['email'], 'MIME' + _name, importer)
|
---|
125 | setattr(sys.modules['email.mime'], _name, importer)
|
---|