Lines Matching refs:self

150     def __init__(self, policy=compat32):
151 self.policy = policy
152 self._headers = []
153 self._unixfrom = None
154 self._payload = None
155 self._charset = None
157 self.preamble = self.epilogue = None
158 self.defects = []
160 self._default_type = 'text/plain'
162 def __str__(self):
165 return self.as_string()
167 def as_string(self, unixfrom=False, maxheaderlen=0, policy=None):
182 policy = self.policy if policy is None else policy
188 g.flatten(self, unixfrom=unixfrom)
191 def __bytes__(self):
194 return self.as_bytes()
196 def as_bytes(self, unixfrom=False, policy=None):
205 policy = self.policy if policy is None else policy
208 g.flatten(self, unixfrom=unixfrom)
211 def is_multipart(self):
213 return isinstance(self._payload, list)
218 def set_unixfrom(self, unixfrom):
219 self._unixfrom = unixfrom
221 def get_unixfrom(self):
222 return self._unixfrom
227 def attach(self, payload):
234 if self._payload is None:
235 self._payload = [payload]
238 self._payload.append(payload)
243 def get_payload(self, i=None, decode=False):
277 if self.is_multipart():
281 return self._payload
283 return self._payload[i]
286 if i is not None and not isinstance(self._payload, list):
287 raise TypeError('Expected list, got %s' % type(self._payload))
288 payload = self._payload
290 cte = str(self.get('content-transfer-encoding', '')).lower()
297 payload = bpayload.decode(self.get_param('charset', 'ascii'), 'replace')
318 self.policy.handle_defect(self, defect)
330 def set_payload(self, payload, charset=None):
338 self._payload = payload
344 self._payload = payload.decode('ascii', 'surrogateescape')
346 self._payload = payload
348 self.set_charset(charset)
350 def set_charset(self, charset):
365 self.del_param('charset')
366 self._charset = None
370 self._charset = charset
371 if 'MIME-Version' not in self:
372 self.add_header('MIME-Version', '1.0')
373 if 'Content-Type' not in self:
374 self.add_header('Content-Type', 'text/plain',
377 self.set_param('charset', charset.get_output_charset())
379 self._payload = charset.body_encode(self._payload)
380 if 'Content-Transfer-Encoding' not in self:
383 cte(self)
388 payload = self._payload
394 self._payload = charset.body_encode(payload)
395 self.add_header('Content-Transfer-Encoding', cte)
397 def get_charset(self):
400 return self._charset
405 def __len__(self):
407 return len(self._headers)
409 def __getitem__(self, name):
418 return self.get(name)
420 def __setitem__(self, name, val):
426 max_count = self.policy.header_max_count(name)
430 for k, v in self._headers:
436 self._headers.append(self.policy.header_store_parse(name, val))
438 def __delitem__(self, name):
445 for k, v in self._headers:
448 self._headers = newheaders
450 def __contains__(self, name):
451 return name.lower() in [k.lower() for k, v in self._headers]
453 def __iter__(self):
454 for field, value in self._headers:
457 def keys(self):
465 return [k for k, v in self._headers]
467 def values(self):
475 return [self.policy.header_fetch_parse(k, v)
476 for k, v in self._headers]
478 def items(self):
486 return [(k, self.policy.header_fetch_parse(k, v))
487 for k, v in self._headers]
489 def get(self, name, failobj=None):
496 for k, v in self._headers:
498 return self.policy.header_fetch_parse(k, v)
506 def set_raw(self, name, value):
511 self._headers.append((name, value))
513 def raw_items(self):
518 return iter(self._headers.copy())
524 def get_all(self, name, failobj=None):
535 for k, v in self._headers:
537 values.append(self.policy.header_fetch_parse(k, v))
542 def add_header(self, _name, _value, **_params):
570 self[_name] = SEMISPACE.join(parts)
572 def replace_header(self, _name, _value):
580 for i, (k, v) in zip(range(len(self._headers)), self._headers):
582 self._headers[i] = self.policy.header_store_parse(k, _value)
591 def get_content_type(self):
605 value = self.get('content-type', missing)
608 return self.get_default_type()
615 def get_content_maintype(self):
621 ctype = self.get_content_type()
624 def get_content_subtype(self):
630 ctype = self.get_content_type()
633 def get_default_type(self):
640 return self._default_type
642 def set_default_type(self, ctype):
649 self._default_type = ctype
651 def _get_params_preserve(self, failobj, header):
655 value = self.get(header, missing)
672 def get_params(self, failobj=None, header='content-type', unquote=True):
686 params = self._get_params_preserve(missing, header)
694 def get_param(self, param, failobj=None, header='content-type',
718 if header not in self:
720 for k, v in self._get_params_preserve(failobj, header):
728 def set_param(self, param, value, header='Content-Type', requote=True,
749 if header not in self and header.lower() == 'content-type':
752 ctype = self.get(header)
753 if not self.get_param(param, header=header):
761 for old_param, old_value in self.get_params(header=header,
772 if ctype != self.get(header):
774 self.replace_header(header, ctype)
776 del self[header]
777 self[header] = ctype
779 def del_param(self, param, header='content-type', requote=True):
787 if header not in self:
790 for p, v in self.get_params(header=header, unquote=requote):
797 if new_ctype != self.get(header):
798 del self[header]
799 self[header] = new_ctype
801 def set_type(self, type, header='Content-Type', requote=True):
821 del self['mime-version']
822 self['MIME-Version'] = '1.0'
823 if header not in self:
824 self[header] = type
826 params = self.get_params(header=header, unquote=requote)
827 del self[header]
828 self[header] = type
831 self.set_param(p, v, header, requote)
833 def get_filename(self, failobj=None):
842 filename = self.get_param('filename', missing, 'content-disposition')
844 filename = self.get_param('name', missing, 'content-type')
849 def get_boundary(self, failobj=None):
856 boundary = self.get_param('boundary', missing)
862 def set_boundary(self, boundary):
873 params = self._get_params_preserve(missing, 'content-type')
893 for h, v in self._headers:
902 newheaders.append(self.policy.header_store_parse(h, val))
906 self._headers = newheaders
908 def get_content_charset(self, failobj=None):
916 charset = self.get_param('charset', missing)
938 def get_charsets(self, failobj=None):
951 one for the container message (i.e. self), so that a non-multipart
954 return [part.get_content_charset(failobj) for part in self.walk()]
956 def get_content_disposition(self):
962 value = self.get('content-disposition')
968 # I.e. def walk(self): ...
974 def __init__(self, policy=None):
981 def as_string(self, unixfrom=False, maxheaderlen=None, policy=None):
992 policy = self.policy if policy is None else policy
997 def __str__(self):
998 return self.as_string(policy=self.policy.clone(utf8=True))
1000 def is_attachment(self):
1001 c_d = self.get('content-disposition')
1004 def _find_body(self, part, preferencelist):
1012 if maintype != 'multipart' or not self.is_multipart():
1016 yield from self._find_body(subpart, preferencelist)
1031 yield from self._find_body(candidate, preferencelist)
1033 def get_body(self, preferencelist=('related', 'html', 'plain')):
1036 Do a depth first search, starting with self, looking for the first part
1045 for prio, part in self._find_body(self, preferencelist):
1057 def iter_attachments(self):
1068 maintype, subtype = self.get_content_type().split('/')
1071 payload = self.get_payload()
1085 start = self.get_param('start')
1106 if ((maintype, subtype) in self._body_types and
1112 def iter_parts(self):
1117 if self.is_multipart():
1118 yield from self.get_payload()
1120 def get_content(self, *args, content_manager=None, **kw):
1122 content_manager = self.policy.content_manager
1123 return content_manager.get_content(self, *args, **kw)
1125 def set_content(self, *args, content_manager=None, **kw):
1127 content_manager = self.policy.content_manager
1128 content_manager.set_content(self, *args, **kw)
1130 def _make_multipart(self, subtype, disallowed_subtypes, boundary):
1131 if self.get_content_maintype() == 'multipart':
1132 existing_subtype = self.get_content_subtype()
1139 for name, value in self._headers:
1146 part = type(self)(policy=self.policy)
1148 part._payload = self._payload
1149 self._payload = [part]
1151 self._payload = []
1152 self._headers = keep_headers
1153 self['Content-Type'] = 'multipart/' + subtype
1155 self.set_param('boundary', boundary)
1157 def make_related(self, boundary=None):
1158 self._make_multipart('related', ('alternative', 'mixed'), boundary)
1160 def make_alternative(self, boundary=None):
1161 self._make_multipart('alternative', ('mixed',), boundary)
1163 def make_mixed(self, boundary=None):
1164 self._make_multipart('mixed', (), boundary)
1166 def _add_multipart(self, _subtype, *args, _disp=None, **kw):
1167 if (self.get_content_maintype() != 'multipart' or
1168 self.get_content_subtype() != _subtype):
1169 getattr(self, 'make_' + _subtype)()
1170 part = type(self)(policy=self.policy)
1174 self.attach(part)
1176 def add_related(self, *args, **kw):
1177 self._add_multipart('related', *args, _disp='inline', **kw)
1179 def add_alternative(self, *args, **kw):
1180 self._add_multipart('alternative', *args, **kw)
1182 def add_attachment(self, *args, **kw):
1183 self._add_multipart('mixed', *args, _disp='attachment', **kw)
1185 def clear(self):
1186 self._headers = []
1187 self._payload = None
1189 def clear_content(self):
1190 self._headers = [(n, v) for n, v in self._headers
1192 self._payload = None
1197 def set_content(self, *args, **kw):
1199 if 'MIME-Version' not in self:
1200 self['MIME-Version'] = '1.0'