
    z%i                        	 d dgZ ddlZddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ ej                   Zd
Z ej$                  d      Zd ZddZd Zd Zd Z G d d       Z G d de      Z G d de      Zy)MessageEmailMessage    N)BytesIOStringIO)utils)errors)compat32charset)decode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]c                     t        |       j                  d      \  }}}|s|j                         d fS |j                         |j                         fS )N;)str	partitionstrip)paramasepbs       A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/email/message.py_splitparamr      sH    
 E
$$S)IAsAwwy$779aggi    c                    	 |t        |      dkD  rt        |t              r,| dz  } t        j                  |d   |d   |d         }| d|S 	 |j                  d       |st        j                  |      r| d	t        j                  |      d
S | d|S | S # t        $ r& | dz  } t        j                  |dd      }| d|cY S w xY w)Nr   *      =asciizutf-8 z="")
len
isinstancetupler   encode_rfc2231encodeUnicodeEncodeError	tspecialssearchquote)r   valuer)   s      r   _formatparamr+   '   s     SZ!^ eU#SLE((q58U1XFE#U++0W% I$$U+ %u{{5'9::#U++ & 0,,UGR@"'//0s   B ,C
	C
c                 r   dt        |       z   } g }| d d dk(  r| dd  } | j                  d      }|dkD  ro| j                  dd|      | j                  dd|      z
  dz  rE| j                  d|dz         }|dkD  r+| j                  dd|      | j                  dd|      z
  dz  rE|dk  rt        |       }| d | }d|v rL|j	                  d      }|d | j                         j                         dz   ||dz   d  j                         z   }|j                  |j                                | |d  } | d d dk(  r|S )Nr   r   r   r    z\"r   r   )r   findcountr!   indexr   lowerappend)splistendfis        r   _parseparamr7   I   s?   c!fAE
BQ%3,abEffSkAg17733/!''%C2HHAM&&cAg&C Ag17733/!''%C2HHAM7a&CdsG!8A"1##%+a!gmmo=AQWWYcdG BQ%3, Lr   c                     t        | t              r!| d   | d   t        j                  | d         fS t        j                  |       S )Nr   r   r   )r"   r#   r   unquote)r*   s    r   _unquotevaluer:   ]   s?    
 %Qxq5==q#:::}}U##r   c                 T   	 g }t        | j                               }|D ]G  }|j                  d      s|j                  d      j	                  d      \  }}}	 t        |d        n t        d      |D ]L  }|st        d      |j                  d      dk(  r n)	 t        j                  |      }|j                  |       N dj                  |      S # t        $ r Y w xY w# t        j                  $ r/ |d	   d
z
  dz  dz  dz   dz  }t        j                  |d |       }Y tw xY w)Ns   begin        )basez`begin` line not foundzTruncated inputs    	
s   endr       ?            r   )iter
splitlines
startswithremoveprefixr   int
ValueErrorr   binasciia2b_uuErrorr1   join)	encodeddecoded_linesencoded_lines_iterlinemode_pathdecoded_linenbytess	            r   
_decode_uurW   h   s?    Mg0023" 
3??9% --i8BB4HMD!TDq! 
3 122" +.//ZZ%/	:#??40L
 	\*+ 88M""'   ~~ 	:Q
b(A-1a7F#??4=9L	:s$   CC%	C"!C"%?D'&D'c                   R   e Zd Z	 efdZd Zd1dZd Zd2dZd Z	d	 Z
d
 Zd Zd3dZd4dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd4dZd Zd Zd4dZd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d5d%Z&	 	 d5d&Z'	 	 d6d'Z(d7d(Z)d8d)Z*d4d*Z+d4d+Z,d, Z-d4d-Z.d4d.Z/d/ Z0dd0l1m2Z2 y)9r   c                     || _         g | _        d | _        d | _        d | _        d x| _        | _        g | _        d| _        y )N
text/plain)	policy_headers	_unixfrom_payload_charsetpreambleepiloguedefects_default_type)selfr[   s     r   __init__zMessage.__init__   sB    (,,)r   c                 $    	 | j                         S N)	as_stringrd   s    r   __str__zMessage.__str__   s    	~~r   r   Nc                     	 ddl m} || j                  n|}t               } ||d||      }|j	                  | |       |j                         S )Nr   )	GeneratorF)mangle_from_maxheaderlenr[   unixfrom)email.generatorrl   r[   r   flattengetvalue)rd   rp   rn   r[   rl   fpgs          r   rh   zMessage.as_string   sU    	 	. &FZb#(#/#% 	
		$	*{{}r   c                 $    	 | j                         S rg   )as_bytesri   s    r   	__bytes__zMessage.__bytes__   s    	}}r   c                     	 ddl m} || j                  n|}t               } ||d|      }|j	                  | |       |j                         S )Nr   )BytesGeneratorF)rm   r[   ro   )rq   rz   r[   r   rr   rs   )rd   rp   r[   rz   rt   ru   s         r   rw   zMessage.as_bytes   sL    	 	3 &FY2E&A			$	*{{}r   c                 8    	 t        | j                  t              S rg   )r"   r^   listri   s    r   is_multipartzMessage.is_multipart   s    D$--..r   c                     || _         y rg   r]   )rd   rp   s     r   set_unixfromzMessage.set_unixfrom   s	    !r   c                     | j                   S rg   r   ri   s    r   get_unixfromzMessage.get_unixfrom   s    ~~r   c                     	 | j                   	|g| _         y 	 | j                   j                  |       y # t        $ r t        d      w xY w)Nz=Attach is not valid on a message with a non-multipart payload)r^   r1   AttributeError	TypeError)rd   payloads     r   attachzMessage.attach   sT    	 == $IDM:$$W-! : !9 : ::s	   4 A	c                    	 | j                         r |ry || j                  S | j                  |   S |;t        | j                  t              s!t	        dt        | j                        z        | j                  }t        | j                  dd            j                         }t        |t              rat        j                  |      r8|j                  dd      }|s8	 |j                  | j                  dd      d      }n|r	 |j                  d      }|s|S |d	k(  rt!        j"                        S |d
k(  rPt%        dj'                  j)                                     \  }}|D ]  }| j*                  j-                  | |         |S |dv r	 t/              S t        |t              rS |S # t        $ r |j                  dd      }Y w xY w# t        $ r |j                  d      }Y w xY w# t0        $ r cY S w xY w)NzExpected list, got %szcontent-transfer-encodingr   r   surrogateescaper   replaceraw-unicode-escapezquoted-printablebase64r   )z
x-uuencodeuuencodeuuezx-uue)r}   r^   r"   r|   r   typer   getr0   r   _has_surrogatesr%   decode	get_paramLookupErrorUnicodeErrorquopridecodestringr   rM   rE   r[   handle_defectrW   rI   )	rd   r6   r   r   ctebpayloadr*   rb   defects	            r   get_payloadzMessage.get_payload   s   	B y}}$}}Q'' =DMM4!@3d4==6IIJJ--$((6;<BBDgs#$$W-">>'3DEF"*//$..G2TV_"` D&~~g6H N$$&&x00H_ &chhx/B/B/D&EFNE7! 8))$78L>> !(++ gs#O= ' F"*//'9"EF
 $ D
  '~~.BCHD(    s6   "F, G 
G- ,G
	G
G*)G*-G;:G;c                    	 t        |d      r@||| _        y t        |t              st        |      }|j	                  |j
                        }t        |d      r|j                  dd      | _        n|| _        || j                  |       y y )Nr%   r   r   r   )hasattrr^   r"   Charsetr%   output_charsetr   set_charset)rd   r   r   s      r   set_payloadzMessage.set_payloadJ  s    	
 7H% 'gw/!'*nnW%;%;<G7H%#NN74EFDM#DMW% r   c                    	 || j                  d       d | _        y t        |t              st        |      }|| _        d| vr| j	                  dd       d| vr#| j	                  dd|j                                n | j                  d|j                                ||j                         k7  r |j                  | j                        | _        d| vr|j                         }	  ||        y y # t        $ rw | j                  }|r>	 |j                  dd	      }n*# t        $ r |j                  |j                        }Y nw xY w|j                  |      | _        | j	                  d|       Y y w xY w)
Nr   MIME-Version1.0Content-TyperZ   r
   zContent-Transfer-Encodingr   r   )	del_paramr_   r"   r   
add_headerget_output_charset	set_parambody_encoder^   get_body_encodingr   r%   r   r   )rd   r   r   r   s       r   r   zMessage.set_charset^  se   	 ?NN9% DM'7+g&G%OONE2%OONL$+$>$>$@  B NN9g&@&@&BCg0022#//>DM&d2++-CBD	 3  B --I")..:K"L' I")..1G1G"HI ' 3 3G < ;SABs6   $C. .E.DE.$E =E.?E  +E.-E.c                     	 | j                   S rg   )r_   ri   s    r   get_charsetzMessage.get_charset  s    	}}r   c                 .    	 t        | j                        S rg   )r!   r\   ri   s    r   __len__zMessage.__len__  s    G4==!!r   c                 &    	 | j                  |      S rg   )r   )rd   names     r   __getitem__zMessage.__getitem__  s    	 xx~r   c                 h   	 | j                   j                  |      }|r_|j                         }d}| j                  D ]>  \  }}|j                         |k(  s|dz  }||k\  s%t	        dj                  ||             | j                  j                  | j                   j                  ||             y )Nr   r   z/There may be at most {} {} headers in a message)r[   header_max_countr0   r\   rI   formatr1   header_store_parse)rd   r   val	max_countlnamefoundkvs           r   __setitem__zMessage.__setitem__  s    	
 KK006	JJLEE Q1779%QJE	)( *88>y$8OQ Q	Q 	T[[;;D#FGr   c                     	 |j                         }g }| j                  D ],  \  }}|j                         |k7  s|j                  ||f       . || _        y rg   )r0   r\   r1   )rd   r   
newheadersr   r   s        r   __delitem__zMessage.__delitem__  sY    	 zz|
MM 	*DAqwwyD !!1a&)	* #r   c                 v    |j                         }| j                  D ]  \  }}||j                         k(  s y y)NTF)r0   r\   )rd   r   
name_lowerr   r   s        r   __contains__zMessage.__contains__  s:    ZZ\
MM 	DAqQWWY&	 r   c              #   <   K   | j                   D ]	  \  }}|  y wrg   r\   )rd   fieldr*   s      r   __iter__zMessage.__iter__  s"      MM 	LE5K	s   c                 N    	 | j                   D cg c]  \  }}|	 c}}S c c}}w rg   r   rd   r   r   s      r   keyszMessage.keys  s%    	 #mm,da,,,s   !c                     	 | j                   D cg c]!  \  }}| j                  j                  ||      # c}}S c c}}w rg   r\   r[   header_fetch_parser   s      r   valueszMessage.values  sB    	 !MM+Aq ..q!4 + 	+ +s   &;c           	          	 | j                   D cg c]#  \  }}|| j                  j                  ||      f% c}}S c c}}w rg   r   r   s      r   itemszMessage.items  sG    	 !MM+Aq DKK221a89 + 	+ +s   (=c                     	 |j                         }| j                  D ]6  \  }}|j                         |k(  s| j                  j                  ||      c S  |S rg   )r0   r\   r[   r   )rd   r   failobjr   r   s        r   r   zMessage.get  sW    	
 zz|MM 	<DAqwwyD {{55a;;	< r   c                 @    	 | j                   j                  ||f       y rg   )r\   r1   )rd   r   r*   s      r   set_rawzMessage.set_raw  s    	 	dE]+r   c                 J    	 t        | j                  j                               S rg   )rD   r\   copyri   s    r   	raw_itemszMessage.raw_items  s!    	 DMM&&())r   c                     	 g }|j                         }| j                  D ]D  \  }}|j                         |k(  s|j                  | j                  j	                  ||             F |s|S |S rg   )r0   r\   r1   r[   r   )rd   r   r   r   r   r   s         r   get_allzMessage.get_all  sl    	 zz|MM 	DDAqwwyD dkk<<QBC	D Nr   c           	      0   	 g }|j                         D ]T  \  }}|"|j                  |j                  dd             *|j                  t        |j                  dd      |             V ||j	                  d|       t
        j                  |      | |<   y )NrS   -r   )r   r1   r   r+   insert	SEMISPACErM   )rd   _name_value_paramspartsr   r   s          r   r   zMessage.add_header"  s    	& MMO 	CDAqyQYYsC01\!))C*=qAB		C
 LLF#nnU+Ur   c                 0   	 |j                         }t        t        t        | j                              | j                        D ]F  \  }\  }}|j                         |k(  s| j
                  j                  ||      | j                  |<    y  t        |      rg   )r0   zipranger!   r\   r[   r   KeyError)rd   r   r   r6   r   r   s         r   replace_headerzMessage.replace_header@  s    	 U3t}}#56F 	"IAv1wwyE!#';;#A#A!V#La 	"
 5/!r   c                     	 t               }| j                  d|      }||u r| j                         S t        |      d   j	                         }|j                  d      dk7  ry|S )Ncontent-typer   /r   rZ   )objectr   get_default_typer   r0   r.   )rd   missingr*   ctypes       r   get_content_typezMessage.get_content_typeS  sh    	 (1G((**E"1%++-;;sq r   c                 L    	 | j                         }|j                  d      d   S )Nr   r   r   splitrd   r   s     r   get_content_maintypezMessage.get_content_maintypek  +    	
 %%'{{3""r   c                 L    	 | j                         }|j                  d      d   S )Nr   r   r   r   s     r   get_content_subtypezMessage.get_content_subtypet  r   r   c                     	 | j                   S rg   rc   ri   s    r   r   zMessage.get_default_type}  s    	 !!!r   c                     	 || _         y rg   r   r   s     r   set_default_typezMessage.set_default_type  s    	 #r   c                 l   t               }| j                  ||      }||u r|S g }t        |      D ]K  }	 |j                  dd      \  }}|j	                         }|j	                         }|j                  ||f       M t        j                  |      }|S # t
        $ r |j	                         }d}Y Iw xY w)Nr   r   r   )	r   r   r7   r   r   rI   r1   r   decode_params)	rd   r   headerr   r*   paramspr   r   s	            r   _get_params_preservezMessage._get_params_preserve  s     ()GNU# 		'AGGCO	czz|iik
 MM4+&		' $$V,  wwys   5BB32B3c                     	 t               }| j                  ||      }||u r|S |r |D cg c]  \  }}|t        |      f c}}S |S c c}}w rg   )r   r  r:   )rd   r   r   r9   r   r   r   r   s           r   
get_paramszMessage.get_params  s[    	 (**7F;WN6<=daQa()==M >s   Ac                     	 || vr|S | j                  ||      D ]9  \  }}|j                         |j                         k(  s(|rt        |      c S |c S  |S rg   )r  r0   r:   )rd   r   r   r   r9   r   r   s          r   r   zMessage.get_param  sd    	, N--gv> 	DAqwwyEKKM)(++H	 r   c                 h   	 t        |t              s|r|||f}|| vr|j                         dk(  rd}n| j                  |      }| j	                  ||      s3|st        |||      }nt        j                  |t        |||      g      }nwd}| j                  ||      D ]_  \  }	}
d}|	j                         |j                         k(  rt        |||      }nt        |	|
|      }|s|}It        j                  ||g      }a || j                  |      k7  r|r| j                  ||       y | |= || |<   y y )Nr   rZ   )r   r   r   r9   )
r"   r#   r0   r   r   r+   r   rM   r  r   )rd   r   r*   r   requoter   languager   r   	old_param	old_valueappend_params               r   r   zMessage.set_param  sG   	  %'Gh.E&,,.N"B EHHV$E~~eF~3$UE7;!Lw?@B E(,v@G )8 )I 
B$	9!??$5#/ug#FL#/	9g#NL(E%NNE<+@AE
B DHHV$$##FE2L$V %r   c           	      ,   	 || vry d}| j                  ||      D ]Y  \  }}|j                         |j                         k7  s(|st        |||      }8t        j	                  |t        |||      g      }[ || j                  |      k7  r	| |= || |<   y y )Nr   r  )r  r0   r+   r   rM   r   )rd   r   r   r  	new_ctyper   r   s          r   r   zMessage.del_param  s    	 	OO67OC 	NDAqwwyEKKM)  ,Q7 ;I )	0<Q70K0M !NI	N ((V$DL )r   c                     	 |j                  d      dk(  st        |j                         dk(  r| d= d| d<   || vr|| |<   y | j                  ||      }| |= || |<   |dd  D ]  \  }}| j	                  ||||        y )Nr   r   r   zmime-versionr   r   r  )r.   rI   r0   r  r   )rd   r   r   r  r   r   r   s          r   set_typezMessage.set_type%  s    	 zz#!#<<>^+^$#(D DL@LV12J 	2DAqNN1a1	2r   c                     	 t               }| j                  d|d      }||u r| j                  d|d      }||u r|S t        j                  |      j	                         S )Nfilenamecontent-dispositionr   r   )r   r   r   collapse_rfc2231_valuer   )rd   r   r   r  s       r   get_filenamezMessage.get_filenameE  sd    	 (>>*g7LMw~~fg~FHwN++H5;;==r   c                     	 t               }| j                  d|      }||u r|S t        j                  |      j	                         S )Nboundary)r   r   r   r  rstrip)rd   r   r   r  s       r   get_boundaryzMessage.get_boundaryU  sG    	
 (>>*g6wN++H5<<>>r   c                    	 t               }| j                  |d      }||u rt        j                  d      g }d}|D ]D  \  }}|j	                         dk(  r|j                  dd|z  f       d}2|j                  ||f       F |s|j                  dd|z  f       g }| j                  D ]  \  }	}
|	j	                         dk(  rzg }|D ]2  \  }}
|
dk(  r|j                  |       |j                  |d|
       4 t        j                  |      }|j                  | j                  j                  |	|             |j                  |	|
f        || _        y )	Nr   zNo Content-Type header foundFr  z"%s"Tr   r   )r   r  r   HeaderParseErrorr0   r1   r\   r   rM   r[   r   )rd   r  r   r   	newparamsfoundppkpvr   hr   r   r   r   s                 r   set_boundaryzMessage.set_boundaryb  sh   	 (**7NCW ))*HII	 	+FBxxzZ'  *fx.?!@A  "b*	+  j&8*;<=
MM 	*DAqwwyN*% 7DAqBwQ1%56	7
  nnU+!!$++"@"@C"HI !!1a&)	* #r   c                 V   	 t               }| j                  d|      }||u r|S t        |t              r*|d   xs d}	 |d   j	                  d      }t        ||      }	 |j	                  d       |j                         S # t        t        f$ r |d   }Y 8w xY w# t        $ r |cY S w xY w)Nr   r   zus-asciir   r   )	r   r   r"   r#   r%   r   r   r   r0   )rd   r   r   r   pcharsetrw   s         r   get_content_charsetzMessage.get_content_charset  s    	 (..G4gNgu%qz/ZH% #1:,,-ABh1	NN:& }}  . %!!*%
  	N	s#    B  B  BBB('B(c                 h    	 | j                         D cg c]  }|j                  |       c}S c c}w rg   )walkr#  )rd   r   parts      r   get_charsetszMessage.get_charsets  s/    	 ?CiikJd((1JJJs   /c                 h    	 | j                  d      }|y t        |      d   j                         }|S )Nr  r   )r   r   r0   )rd   r*   c_ds      r   get_content_dispositionzMessage.get_content_disposition  s=    	
 ./=% #))+
r   )r%  )Fr   N)FN)NFrg   )Nr   T)r   TNr   F)r   T)r   T)3__name__
__module____qualname__r	   re   rj   rh   rx   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   r  r  r  r   r#  r'  r*  email.iteratorsr%   r   r   r   r      s    ' 
* 
0
/": Un&(-B^"	H$
#-	+	+
",*$,<"&0##"#*, 5C D FJ5:1%f%,2@> ?,#\<K$
 %r   c                        e Zd Zd fd	Zd fd	Zd Zd Zd ZddZh dZ	d	 Z
d
 ZdddZdddZd ZddZddZddZdddZd Zd Zd Zd Zd Z xZS )MIMEPartNc                 8    |ddl m} |}t        |   |       y )Nr   )default)email.policyr3  superre   )rd   r[   r3  	__class__s      r   re   zMIMEPart.__init__  s    >,F r   c                 d    	 || j                   n|}||j                  }t        |   |||      S rg   )r[   max_line_lengthr5  rh   )rd   rp   rn   r[   r6  s       r   rh   zMIMEPart.as_string  s>    		 !'F!11Lw <@@r   c                 Z    | j                  | j                  j                  d            S )NT)utf8r[   )rh   r[   cloneri   s    r   rj   zMIMEPart.__str__  s%    ~~T[[%6%6D%6%A~BBr   c                 J    | j                  d      }|dS |j                  dk(  S )Nr  F
attachment)r   content_disposition)rd   r)  s     r   is_attachmentzMIMEPart.is_attachment  s+    hh,-uP)@)@L)PPr   c              #   \  K   |j                         ry |j                         j                  d      \  }}|dk(  r||v r|j                  |      |f y |dk7  s| j	                         sy |dk7  r0|j                         D ]  }| j                  ||      E d {     y d|v r|j                  d      |f d }|j                  d      }|r!|j                         D ]  }|d   |k(  s|} n ||j                         }|r|d   nd }|| j                  ||      E d {    y y 7 7 w)Nr   text	multipartrelatedstart
content-idr   )	r@  r   r   r/   r}   
iter_parts
_find_bodyr   r   )	rd   r&  preferencelistmaintypesubtypesubpart	candidaterE  subpartss	            r   rH  zMIMEPart._find_body  sW     11399#>'v.(%++G4d;;{"$*;*;*=i??, D??7NCCCD&!''	2D99	w'??, <(E1 'I '')H'/TI y.AAA ! D Bs+   BD,D(AD,*7D,!D*"D,*D,c                 z    	 t        |      }d }| j                  | |      D ]  \  }}||k  s|}|}|dk(  s |S  |S )Nr   )r!   rH  )rd   rI  	best_priobodyprior&  s         r   get_bodyzMIMEPart.get_body  s^    	 '	//$? 	JD$i 	19	 r   >   rB  htmlrB  plainrC  rD  rC  alternativec              #     K   	 | j                         j                  d      \  }}|dk7  s|dk(  ry | j                         }	 |j                         }|dk(  rt|dk(  ro| j                  d      }|r@d}g }|D ]*  }|j                  d      |k(  rd}|j                  |       , |r|E d {    y |j                  d	       |E d {    y g }	|D ]^  }|j                         j                  d      \  }}||f| j                  v r&|j                         s||	vr|	j                  |       [| ` y # t        $ r Y y w xY w7 7 |w)
Nr   rC  rZ  rD  rE  FrF  Tr   )r   r   r   r   r   r   r   r1   pop_body_typesr@  )
rd   rJ  rK  r   r   rE  r   attachmentsr&  seens
             r   iter_attachmentszMIMEPart.iter_attachments%  sq    		 !11399#>'{"g&>""$	LLNE
 {"w)'; NN7+E ! 1Dxx-6 $#**40	1
 ***IIaL  	D $ 5 5 7 = =c BHg7#t'7'77**,1DG$J	7  		$ + sI   ?ED1 AE)E *EEA+E1	D=:E<D==EEc              #   d   K   	 | j                         r| j                         E d {    y y 7 wrg   )r}   r   ri   s    r   rG  zMIMEPart.iter_parts\  s3     	 ''))) )s   %0.0)content_managerc                ^    || j                   j                  } |j                  | g|i |S rg   )r[   rb  get_contentrd   rb  argskws       r   rd  zMIMEPart.get_contentd  s4    ""kk99O***4=$="==r   c                `    || j                   j                  } |j                  | g|i | y rg   )r[   rb  set_contentre  s       r   ri  zMIMEPart.set_contenti  s1    ""kk99O###D64626r   c                 $   | j                         dk(  r5| j                         }||fz   }||v rt        dj                  ||            g }g }| j                  D ]K  \  }}|j                         j                  d      r|j                  ||f       9|j                  ||f       M |r= t        |       | j                        }	||	_        | j                  |	_
        |	g| _
        ng | _
        || _        d|z   | d<   || j                  d|       y y )NrC  zCannot convert {} to {}content-r;  z
multipart/r   r  )r   r   rI   r   r\   r0   rF   r1   r   r[   r^   r   )
rd   rK  disallowed_subtypesr  existing_subtypekeep_headerspart_headersr   r*   r&  s
             r   _make_multipartzMIMEPart._make_multipartn  s   $$&+5#779"5
"B#66 !:!A!A$g"/ 0 0== 	3KD%zz|&&z2##T5M2##T5M2		3
 4:T[[1D(DM MMDM!FDMDM$+g5^NN:x0  r   c                 *    | j                  dd|       y )NrD  )rZ  mixedrp  rd   r  s     r   make_relatedzMIMEPart.make_related  s    Y(@(Kr   c                 *    | j                  dd|       y )NrZ  )rr  rs  rt  s     r   make_alternativezMIMEPart.make_alternative  s    ]JAr   c                 *    | j                  dd|       y )Nrr  r/  rs  rt  s     r   
make_mixedzMIMEPart.make_mixed  s    Wb(3r   )_dispc                   | j                         dk7  s| j                         |k7  r t        | d|z                  t        |       | j                        } |j
                  |i | |r	d|vr||d<   | j                  |       y )NrC  make_r;  r  zContent-Disposition)r   r   getattrr   r[   ri  r   )rd   _subtyperz  rf  rg  r&  s         r   _add_multipartzMIMEPart._add_multipart  s    %%';6((*h6-GD'H,-/tDz-$%"%*$6*/D&'Dr   c                 4     | j                   dg|ddi| y )NrD  rz  inliner  rd   rf  rg  s      r   add_relatedzMIMEPart.add_related  s!    ICCHCCr   c                 0     | j                   dg|i | y )NrZ  r  r  s      r   add_alternativezMIMEPart.add_alternative  s    M7D7B7r   c                 4     | j                   dg|ddi| y )Nrr  rz  r>  r  r  s      r   add_attachmentzMIMEPart.add_attachment  s!    GEdE,E"Er   c                      g | _         d | _        y rg   )r\   r^   ri   s    r   clearzMIMEPart.clear  s    r   c                     | j                   D cg c](  \  }}|j                         j                  d      s||f* c}}| _         d | _        y c c}}w )Nrk  )r\   r0   rF   r^   )rd   nr   s      r   clear_contentzMIMEPart.clear_content  sJ    ,0MM BDAq !	 4 4Z @ Q BBs   -Arg   )FNN))rD  rU  rW  )r+  r,  r-  re   rh   rj   r@  rH  rS  r]  r`  rG  rd  ri  rp  ru  rw  ry  r  r  r  r  r  r  __classcell__r6  s   @r   r1  r1    s    !A CQB:(1K5n* 26 >
 26 7
16LB4 59 D8Fr   r1  c                        e Zd Z fdZ xZS )r   c                 8    t        |   |i | d| vrd| d<   y y )Nr   r   )r5  ri  )rd   rf  rg  r6  s      r   ri  zEmailMessage.set_content  s,    T(R(%#(D  &r   )r+  r,  r-  ri  r  r  s   @r   r   r     s    ) )r   )NT)__all__rJ   rer   ior   r   emailr   r   email._policybaser	   r   r_   email._encoded_wordsr   r   r   compiler'   r   r+   r7   r:   rW   r   r1  r   r/  r   r   <module>r     s   
 ?n
%  	      & % )


	 BJJ23	  D($#>F% F%R\w \~)8 )r   