| 
									
										
										
										
											2006-01-17 04:49:07 +00:00
										 |  |  |  | # Copyright (C) 2001-2006 Python Software Foundation | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  |  | # Author: Barry Warsaw | 
					
						
							|  |  |  |  | # Contact: email-sig@python.org | 
					
						
							| 
									
										
										
										
											2001-09-23 03:17:28 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-09 03:55:11 +00:00
										 |  |  |  | """A package for parsing, handling, and generating email messages.""" | 
					
						
							| 
									
										
										
										
											2001-09-23 03:17:28 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-07-17 23:07:51 +00:00
										 |  |  |  | __version__ = '4.0.1' | 
					
						
							| 
									
										
										
										
											2001-09-23 03:17:28 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-09-30 20:41:33 +00:00
										 |  |  |  | __all__ = [ | 
					
						
							| 
									
										
										
										
											2006-03-18 15:41:53 +00:00
										 |  |  |  |     # Old names | 
					
						
							| 
									
										
										
										
											2002-09-30 20:41:33 +00: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 15:41:53 +00:00
										 |  |  |  |     # new names | 
					
						
							|  |  |  |  |     'base64mime', | 
					
						
							|  |  |  |  |     'charset', | 
					
						
							|  |  |  |  |     'encoders', | 
					
						
							|  |  |  |  |     'errors', | 
					
						
							|  |  |  |  |     'generator', | 
					
						
							|  |  |  |  |     'header', | 
					
						
							|  |  |  |  |     'iterators', | 
					
						
							|  |  |  |  |     'message', | 
					
						
							|  |  |  |  |     'mime', | 
					
						
							|  |  |  |  |     'parser', | 
					
						
							|  |  |  |  |     'quoprimime', | 
					
						
							|  |  |  |  |     'utils', | 
					
						
							| 
									
										
										
										
											2002-09-30 20:41:33 +00:00
										 |  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2001-09-23 03:17:28 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-09-28 20:52:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-10-04 17:05:11 +00:00
										 |  |  |  |  | 
					
						
							| 
									
										
										
										
											2002-09-25 22:07:50 +00: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 03:16:19 +00:00
										 |  |  |  | def message_from_string(s, *args, **kws): | 
					
						
							| 
									
										
										
										
											2002-09-28 20:52:26 +00:00
										 |  |  |  |     """Parse a string into a Message object model.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Optional _class and strict are passed to the Parser constructor. | 
					
						
							|  |  |  |  |     """
 | 
					
						
							| 
									
										
										
										
											2006-03-18 15:41:53 +00:00
										 |  |  |  |     from email.parser import Parser | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  |  |     return Parser(*args, **kws).parsestr(s) | 
					
						
							| 
									
										
										
										
											2001-09-23 03:17:28 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-05-09 03:55:11 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  |  | def message_from_file(fp, *args, **kws): | 
					
						
							| 
									
										
										
										
											2002-09-28 20:52:26 +00: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 15:41:53 +00:00
										 |  |  |  |     from email.parser import Parser | 
					
						
							| 
									
										
										
										
											2004-10-03 03:16:19 +00:00
										 |  |  |  |     return Parser(*args, **kws).parse(fp) | 
					
						
							| 
									
										
										
										
											2006-03-18 15:41:53 +00: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 07:10:01 +00: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 15:41:53 +00: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) |