2006-01-17 00:49:07 -04:00
|
|
|
|
# Copyright (C) 2001-2006 Python Software Foundation
|
2004-10-03 00:16:19 -03:00
|
|
|
|
# Author: Barry Warsaw
|
|
|
|
|
# Contact: email-sig@python.org
|
2001-09-23 00:17:28 -03:00
|
|
|
|
|
2004-05-09 00:55:11 -03:00
|
|
|
|
"""A package for parsing, handling, and generating email messages."""
|
2001-09-23 00:17:28 -03:00
|
|
|
|
|
2010-06-26 16:01:40 -03:00
|
|
|
|
__version__ = '4.0.2'
|
2001-09-23 00:17:28 -03:00
|
|
|
|
|
2002-09-30 17:41:33 -03:00
|
|
|
|
__all__ = [
|
2006-03-18 11:41:53 -04:00
|
|
|
|
# Old names
|
2002-09-30 17:41:33 -03:00
|
|
|
|
'base64MIME',
|
|
|
|
|
'Charset',
|
|
|
|
|
'Encoders',
|
|
|
|
|
'Errors',
|
|
|
|
|
'Generator',
|
|
|
|
|
'Header',
|
|
|
|
|
'Iterators',
|
|
|
|
|
'Message',
|
|
|
|
|
'MIMEAudio',
|
|
|
|
|
'MIMEBase',
|
|
|
|
|
'MIMEImage',
|
|
|
|
|
'MIMEMessage',
|
|
|
|
|
'MIMEMultipart',
|
|
|
|
|
'MIMENonMultipart',
|
|
|
|
|
'MIMEText',
|
|
|
|
|
'Parser',
|
|
|
|
|
'quopriMIME',
|
|
|
|
|
'Utils',
|
|
|
|
|
'message_from_string',
|
|
|
|
|
'message_from_file',
|
2006-03-18 11:41:53 -04:00
|
|
|
|
# new names
|
|
|
|
|
'base64mime',
|
|
|
|
|
'charset',
|
|
|
|
|
'encoders',
|
|
|
|
|
'errors',
|
|
|
|
|
'generator',
|
|
|
|
|
'header',
|
|
|
|
|
'iterators',
|
|
|
|
|
'message',
|
|
|
|
|
'mime',
|
|
|
|
|
'parser',
|
|
|
|
|
'quoprimime',
|
|
|
|
|
'utils',
|
2002-09-30 17:41:33 -03:00
|
|
|
|
]
|
2001-09-23 00:17:28 -03:00
|
|
|
|
|
2002-09-28 17:52:26 -03:00
|
|
|
|
|
2001-10-04 14:05:11 -03:00
|
|
|
|
|
2002-09-25 19:07:50 -03:00
|
|
|
|
# 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.
|
2004-10-03 00:16:19 -03:00
|
|
|
|
def message_from_string(s, *args, **kws):
|
2002-09-28 17:52:26 -03:00
|
|
|
|
"""Parse a string into a Message object model.
|
|
|
|
|
|
|
|
|
|
Optional _class and strict are passed to the Parser constructor.
|
|
|
|
|
"""
|
2006-03-18 11:41:53 -04:00
|
|
|
|
from email.parser import Parser
|
2004-10-03 00:16:19 -03:00
|
|
|
|
return Parser(*args, **kws).parsestr(s)
|
2001-09-23 00:17:28 -03:00
|
|
|
|
|
2004-05-09 00:55:11 -03:00
|
|
|
|
|
2004-10-03 00:16:19 -03:00
|
|
|
|
def message_from_file(fp, *args, **kws):
|
2002-09-28 17:52:26 -03:00
|
|
|
|
"""Read a file and parse its contents into a Message object model.
|
|
|
|
|
|
|
|
|
|
Optional _class and strict are passed to the Parser constructor.
|
|
|
|
|
"""
|
2006-03-18 11:41:53 -04:00
|
|
|
|
from email.parser import Parser
|
2004-10-03 00:16:19 -03:00
|
|
|
|
return Parser(*args, **kws).parse(fp)
|
2006-03-18 11:41:53 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 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):
|
2006-03-20 03:10:01 -04:00
|
|
|
|
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)
|
2006-03-18 11:41:53 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_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)
|