Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

# Copyright (C) 2001-2006 Python Software Foundation 

# Author: Barry Warsaw 

# Contact: email-sig@python.org 

 

"""A package for parsing, handling, and generating email messages.""" 

 

__version__ = '4.0.3' 

 

__all__ = [ 

    # Old names 

    'base64MIME', 

    'Charset', 

    'Encoders', 

    'Errors', 

    'Generator', 

    'Header', 

    'Iterators', 

    'Message', 

    'MIMEAudio', 

    'MIMEBase', 

    'MIMEImage', 

    'MIMEMessage', 

    'MIMEMultipart', 

    'MIMENonMultipart', 

    'MIMEText', 

    'Parser', 

    'quopriMIME', 

    'Utils', 

    'message_from_string', 

    'message_from_file', 

    # new names 

    'base64mime', 

    'charset', 

    'encoders', 

    'errors', 

    'generator', 

    'header', 

    'iterators', 

    'message', 

    'mime', 

    'parser', 

    'quoprimime', 

    'utils', 

    ] 

 

 

 

# Some convenience routines.  Don't import Parser and Message as side-effects 

# of importing email since those cascadingly import most of the rest of the 

# email package. 

def message_from_string(s, *args, **kws): 

    """Parse a string into a Message object model. 

 

    Optional _class and strict are passed to the Parser constructor. 

    """ 

    from email.parser import Parser 

    return Parser(*args, **kws).parsestr(s) 

 

 

def message_from_file(fp, *args, **kws): 

    """Read a file and parse its contents into a Message object model. 

 

    Optional _class and strict are passed to the Parser constructor. 

    """ 

    from email.parser import Parser 

    return Parser(*args, **kws).parse(fp) 

 

 

 

# Lazy loading to provide name mapping from new-style names (PEP 8 compatible 

# email 4.0 module names), to old-style names (email 3.0 module names). 

import sys 

 

class LazyImporter(object): 

    def __init__(self, module_name): 

        self.__name__ = 'email.' + module_name 

 

    def __getattr__(self, name): 

        __import__(self.__name__) 

        mod = sys.modules[self.__name__] 

        self.__dict__.update(mod.__dict__) 

        return getattr(mod, name) 

 

 

_LOWERNAMES = [ 

    # email.<old name> -> email.<new name is lowercased old name> 

    'Charset', 

    'Encoders', 

    'Errors', 

    'FeedParser', 

    'Generator', 

    'Header', 

    'Iterators', 

    'Message', 

    'Parser', 

    'Utils', 

    'base64MIME', 

    'quopriMIME', 

    ] 

 

_MIMENAMES = [ 

    # email.MIME<old name> -> email.mime.<new name is lowercased old name> 

    'Audio', 

    'Base', 

    'Image', 

    'Message', 

    'Multipart', 

    'NonMultipart', 

    'Text', 

    ] 

 

for _name in _LOWERNAMES: 

    importer = LazyImporter(_name.lower()) 

    sys.modules['email.' + _name] = importer 

    setattr(sys.modules['email'], _name, importer) 

 

 

import email.mime 

for _name in _MIMENAMES: 

    importer = LazyImporter('mime.' + _name.lower()) 

    sys.modules['email.MIME' + _name] = importer 

    setattr(sys.modules['email'], 'MIME' + _name, importer) 

    setattr(sys.modules['email.mime'], _name, importer)