iterators.py (1342B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\email\iterators.py 2 __all__ = ['body_line_iterator', 'typed_subpart_iterator', 'walk'] 3 import sys 4 from cStringIO import StringIO 5 6 def walk(self): 7 yield self 8 if self.is_multipart(): 9 for subpart in self.get_payload(): 10 for subsubpart in subpart.walk(): 11 yield subsubpart 12 13 14 def body_line_iterator(msg, decode = False): 15 for subpart in msg.walk(): 16 payload = subpart.get_payload(decode=decode) 17 if isinstance(payload, basestring): 18 for line in StringIO(payload): 19 yield line 20 21 22 def typed_subpart_iterator(msg, maintype = 'text', subtype = None): 23 for subpart in msg.walk(): 24 if subpart.get_content_maintype() == maintype: 25 if subtype is None or subpart.get_content_subtype() == subtype: 26 yield subpart 27 28 29 def _structure(msg, fp = None, level = 0, include_default = False): 30 if fp is None: 31 fp = sys.stdout 32 tab = ' ' * (level * 4) 33 print >> fp, tab + msg.get_content_type(), 34 if include_default: 35 print >> fp, '[%s]' % msg.get_default_type() 36 else: 37 print >> fp 38 if msg.is_multipart(): 39 for subpart in msg.get_payload(): 40 _structure(subpart, fp, level + 1, include_default)