B
    0*™\»  ã               @   sØ   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mZ ddlmZ dd	lmZ ejZd
Ze d¡Zdd„ Zddd„Zdd„ Zdd„ ZG dd „ d ƒZG dd„ deƒZG dd„ deƒZdS )ÚMessageÚEmailMessageé    N)ÚBytesIOÚStringIO)Úutils)Úerrors)ÚPolicyÚcompat32)Úcharset)Údecode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]c             C   s4   t | ƒ d¡\}}}|s$| ¡ d fS | ¡ | ¡ fS )Nú;)ÚstrÚ	partitionÚstrip)ÚparamÚaÚsepÚb© r   ú8C:\ALexclude\prg\programme\Python37\Lib\email\message.pyÚ_splitparam   s    r   Tc             C   sÄ   |d k	r¼t |ƒdkr¼t|tƒrL| d7 } t |d |d |d ¡}d| |f S y| d¡ W n2 tk
rŒ   | d7 } t |dd¡}d| |f S X |sœt |¡r®d	| t 	|¡f S d| |f S n| S d S )
Nr   Ú*é   é   z%s=%sÚasciizutf-8Ú z%s="%s")
ÚlenÚ
isinstanceÚtupler   Zencode_rfc2231ÚencodeÚUnicodeEncodeErrorÚ	tspecialsÚsearchÚquote)r   Úvaluer#   r   r   r   Ú_formatparam'   s    	
r%   c             C   sò   dt | ƒ } g }xÜ| d d… dkrì| dd … } |  d¡}x<|dkrt|  dd|¡|  dd|¡ d rt|  d|d ¡}q:W |dk r†t| ƒ}| d |… }d|krÐ| d¡}|d |…  ¡  ¡ d ||d d …  ¡  }| | ¡ ¡ | |d … } qW |S )Nr   r   r   ú"z\"r   ú=)r   ÚfindÚcountr   Úindexr   ÚlowerÚappend)ÚsZplistÚendÚfÚir   r   r   Ú_parseparamI   s     
*
,r1   c             C   s4   t | tƒr&| d | d t | d ¡fS t | ¡S d S )Nr   r   r   )r   r   r   Úunquote)r$   r   r   r   Ú_unquotevalue]   s    
r3   c               @   s¢  e Zd Zefdd„Zdd„ Zdcdd	„Zd
d„ Zdddd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdedd„Zdfdd„Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zdgd0d1„Zd2d3„ Zd4d5„ Zdhd6d7„Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDdE„ Z$dFdG„ Z%didJdK„Z&djdLdM„Z'dkdPdQ„Z(dldRdS„Z)dmdTdU„Z*dndVdW„Z+dodXdY„Z,dZd[„ Z-dpd\d]„Z.dqd^d_„Z/d`da„ Z0ddbl1m2Z2 dS )rr   c             C   s:   || _ g | _d | _d | _d | _d  | _| _g | _d| _d S )Nz
text/plain)	ÚpolicyÚ_headersÚ	_unixfromÚ_payloadÚ_charsetZpreambleZepilogueÚdefectsÚ_default_type)Úselfr4   r   r   r   Ú__init__x   s    zMessage.__init__c             C   s   |   ¡ S )N)Ú	as_string)r;   r   r   r   Ú__str__„   s    zMessage.__str__Fr   Nc             C   sJ   ddl m} |d kr| jn|}tƒ }||d||d}|j| |d | ¡ S )Nr   )Ú	GeneratorF)Úmangle_from_Úmaxheaderlenr4   )Úunixfrom)Úemail.generatorr?   r4   r   ÚflattenÚgetvalue)r;   rB   rA   r4   r?   ÚfpÚgr   r   r   r=   ‰   s    zMessage.as_stringc             C   s   |   ¡ S )N)Úas_bytes)r;   r   r   r   Ú	__bytes__¡   s    zMessage.__bytes__c             C   sH   ddl m} |d kr| jn|}tƒ }||d|d}|j| |d | ¡ S )Nr   )ÚBytesGeneratorF)r@   r4   )rB   )rC   rJ   r4   r   rD   rE   )r;   rB   r4   rJ   rF   rG   r   r   r   rH   ¦   s    zMessage.as_bytesc             C   s   t | jtƒS )N)r   r7   Úlist)r;   r   r   r   Úis_multipartµ   s    zMessage.is_multipartc             C   s
   || _ d S )N)r6   )r;   rB   r   r   r   Úset_unixfrom¼   s    zMessage.set_unixfromc             C   s   | j S )N)r6   )r;   r   r   r   Úget_unixfrom¿   s    zMessage.get_unixfromc             C   sF   | j d kr|g| _ n.y| j  |¡ W n tk
r@   tdƒ‚Y nX d S )Nz=Attach is not valid on a message with a non-multipart payload)r7   r,   ÚAttributeErrorÚ	TypeError)r;   Úpayloadr   r   r   ÚattachÅ   s    

zMessage.attachc             C   s¸  |   ¡ r(|rd S |d kr| jS | j| S |d k	rNt| jtƒsNtdt| jƒ ƒ‚| j}t|  dd¡ƒ ¡ }t|tƒrút	 
|¡rÈ| dd¡}|súy| |  dd¡d¡}W qú tk
rÄ   | dd¡}Y qúX n2|rúy| d¡}W n tk
rø   | d¡}Y nX |s|S |d	krt |¡S |d
krZtd | ¡ ¡ƒ\}}x|D ]}| j | |¡ q>W |S |dkr¤t|ƒ}	tƒ }
ytj|	|
dd |
 ¡ S  tjk
r¢   |S X t|tƒr´|S |S )NzExpected list, got %szcontent-transfer-encodingr   r   Úsurrogateescaper
   Úreplacezraw-unicode-escapezquoted-printableÚbase64ó    )z
x-uuencodeZuuencodeZuuezx-uueT)Úquiet)rL   r7   r   rK   rP   Útyper   Úgetr+   r   Z_has_surrogatesr   ÚdecodeÚ	get_paramÚLookupErrorÚUnicodeErrorÚquopriZdecodestringr   ÚjoinÚ
splitlinesr4   Zhandle_defectr   ÚuurE   ÚError)r;   r0   rZ   rQ   ÚcteZbpayloadr$   r9   ZdefectZin_fileZout_filer   r   r   Úget_payloadÕ   sV    "







zMessage.get_payloadc             C   sp   t |dƒr:|d kr|| _d S t|tƒs.t|ƒ}| |j¡}t |dƒrT| dd¡| _n|| _|d k	rl|  |¡ d S )Nr   rZ   r   rS   )Úhasattrr7   r   ÚCharsetr   Úoutput_charsetrZ   Úset_charset)r;   rQ   r
   r   r   r   Úset_payload/  s    


zMessage.set_payloadc             C   s  |d kr|   d¡ d | _d S t|tƒs.t|ƒ}|| _d| krH|  dd¡ d| krf| jdd| ¡ d n|  d| ¡ ¡ || ¡ kr| | j¡| _d| kr| 	¡ }y|| ƒ W nj t
k
r   | j}|rüy| dd	¡}W n  tk
rú   | |j¡}Y nX | |¡| _|  d|¡ Y nX d S )
Nr
   zMIME-Versionz1.0zContent-Typez
text/plain)r
   zContent-Transfer-Encodingr   rS   )Ú	del_paramr8   r   rf   Ú
add_headerZget_output_charsetÚ	set_paramZbody_encoder7   Zget_body_encodingrP   r   r]   rg   )r;   r
   rc   rQ   r   r   r   rh   C  s8    


zMessage.set_charsetc             C   s   | j S )N)r8   )r;   r   r   r   Úget_charsetr  s    zMessage.get_charsetc             C   s
   t | jƒS )N)r   r5   )r;   r   r   r   Ú__len__z  s    zMessage.__len__c             C   s
   |   |¡S )N)rY   )r;   Únamer   r   r   Ú__getitem__~  s    	zMessage.__getitem__c             C   sv   | j  |¡}|r\| ¡ }d}x>| jD ]4\}}| ¡ |kr$|d7 }||kr$td ||¡ƒ‚q$W | j | j  ||¡¡ d S )Nr   r   z/There may be at most {} {} headers in a message)r4   Zheader_max_countr+   r5   Ú
ValueErrorÚformatr,   Úheader_store_parse)r;   ro   ÚvalZ	max_countZlnameÚfoundÚkÚvr   r   r   Ú__setitem__‰  s    zMessage.__setitem__c             C   sD   |  ¡ }g }x,| jD ]"\}}|  ¡ |kr| ||f¡ qW || _d S )N)r+   r5   r,   )r;   ro   Ú
newheadersrv   rw   r   r   r   Ú__delitem__›  s    zMessage.__delitem__c             C   s   |  ¡ dd„ | jD ƒkS )Nc             S   s   g | ]\}}|  ¡ ‘qS r   )r+   )Ú.0rv   rw   r   r   r   ú
<listcomp>¨  s    z(Message.__contains__.<locals>.<listcomp>)r+   r5   )r;   ro   r   r   r   Ú__contains__§  s    zMessage.__contains__c             c   s   x| j D ]\}}|V  qW d S )N)r5   )r;   Zfieldr$   r   r   r   Ú__iter__ª  s    zMessage.__iter__c             C   s   dd„ | j D ƒS )Nc             S   s   g | ]\}}|‘qS r   r   )r{   rv   rw   r   r   r   r|   ¶  s    z Message.keys.<locals>.<listcomp>)r5   )r;   r   r   r   Úkeys®  s    zMessage.keysc                s   ‡ fdd„ˆ j D ƒS )Nc                s   g | ]\}}ˆ j  ||¡‘qS r   )r4   Úheader_fetch_parse)r{   rv   rw   )r;   r   r   r|   À  s   z"Message.values.<locals>.<listcomp>)r5   )r;   r   )r;   r   Úvalues¸  s    
zMessage.valuesc                s   ‡ fdd„ˆ j D ƒS )Nc                s"   g | ]\}}|ˆ j  ||¡f‘qS r   )r4   r€   )r{   rv   rw   )r;   r   r   r|   Ë  s   z!Message.items.<locals>.<listcomp>)r5   )r;   r   )r;   r   ÚitemsÃ  s    
zMessage.itemsc             C   s:   |  ¡ }x,| jD ]"\}}|  ¡ |kr| j ||¡S qW |S )N)r+   r5   r4   r€   )r;   ro   Úfailobjrv   rw   r   r   r   rY   Î  s
    zMessage.getc             C   s   | j  ||f¡ d S )N)r5   r,   )r;   ro   r$   r   r   r   Úset_rawß  s    zMessage.set_rawc             C   s   t | j ¡ ƒS )N)Úiterr5   Úcopy)r;   r   r   r   Ú	raw_itemsæ  s    zMessage.raw_itemsc             C   sL   g }|  ¡ }x2| jD ](\}}|  ¡ |kr| | j ||¡¡ qW |sH|S |S )N)r+   r5   r,   r4   r€   )r;   ro   rƒ   r   rv   rw   r   r   r   Úget_allñ  s    	zMessage.get_allc             K   st   g }xH|  ¡ D ]<\}}|d kr2| | dd¡¡ q| t| dd¡|ƒ¡ qW |d k	rb| d|¡ t |¡| |< d S )NÚ_ú-r   )r‚   r,   rT   r%   ÚinsertÚ	SEMISPACEr_   )r;   Ú_nameÚ_valueZ_paramsÚpartsrv   rw   r   r   r   rk     s    zMessage.add_headerc             C   s^   |  ¡ }xPttt| jƒƒ| jƒD ].\}\}}|  ¡ |kr | j ||¡| j|< P q W t|ƒ‚d S )N)r+   ÚzipÚranger   r5   r4   rs   ÚKeyError)r;   r   rŽ   r0   rv   rw   r   r   r   Úreplace_header!  s    $zMessage.replace_headerc             C   sH   t ƒ }|  d|¡}||kr"|  ¡ S t|ƒd  ¡ }| d¡dkrDdS |S )Nzcontent-typer   ú/r   z
text/plain)ÚobjectrY   Úget_default_typer   r+   r)   )r;   Úmissingr$   Úctyper   r   r   Úget_content_type4  s    zMessage.get_content_typec             C   s   |   ¡ }| d¡d S )Nr”   r   )r™   Úsplit)r;   r˜   r   r   r   Úget_content_maintypeL  s    zMessage.get_content_maintypec             C   s   |   ¡ }| d¡d S )Nr”   r   )r™   rš   )r;   r˜   r   r   r   Úget_content_subtypeU  s    zMessage.get_content_subtypec             C   s   | j S )N)r:   )r;   r   r   r   r–   ^  s    zMessage.get_default_typec             C   s
   || _ d S )N)r:   )r;   r˜   r   r   r   Úset_default_typeg  s    zMessage.set_default_typec       	   	   C   s–   t ƒ }|  ||¡}||kr|S g }xdt|ƒD ]X}y$| dd¡\}}| ¡ }| ¡ }W n  tk
rt   | ¡ }d}Y nX | ||f¡ q,W t |¡}|S )Nr'   r   r   )	r•   rY   r1   rš   r   rq   r,   r   Zdecode_params)	r;   rƒ   Úheaderr—   r$   ÚparamsÚpro   rt   r   r   r   Ú_get_params_preservep  s     

zMessage._get_params_preserveúcontent-typeTc             C   s8   t ƒ }|  ||¡}||kr|S |r0dd„ |D ƒS |S d S )Nc             S   s   g | ]\}}|t |ƒf‘qS r   )r3   )r{   rv   rw   r   r   r   r|   —  s    z&Message.get_params.<locals>.<listcomp>)r•   r¡   )r;   rƒ   rž   r2   r—   rŸ   r   r   r   Ú
get_params…  s    zMessage.get_paramsc             C   sJ   || kr|S x8|   ||¡D ](\}}| ¡ | ¡ kr|r>t|ƒS |S qW |S )N)r¡   r+   r3   )r;   r   rƒ   rž   r2   rv   rw   r   r   r   r[   ›  s    zMessage.get_paramúContent-Typer   c             C   s  t |tƒs|r|||f}|| kr2| ¡ dkr2d}n
|  |¡}| j||dst|s\t|||ƒ}qÚt |t|||ƒg¡}nfd}x`| j||dD ]N\}	}
d}|	 ¡ | ¡ kr²t|||ƒ}nt|	|
|ƒ}|sÈ|}qˆt ||g¡}qˆW ||  |¡kr
|rü|  	||¡ n| |= || |< d S )Nzcontent-typez
text/plain)rž   r   )rž   r2   )
r   r   r+   rY   r[   r%   rŒ   r_   r£   r“   )r;   r   r$   rž   Úrequoter
   ÚlanguagerT   r˜   Z	old_paramÚ	old_valueZappend_paramr   r   r   rl   ½  s2    

zMessage.set_paramc             C   s„   || krd S d}xR| j ||dD ]@\}}| ¡ | ¡ kr |sJt|||ƒ}q t |t|||ƒg¡}q W ||  |¡kr€| |= || |< d S )Nr   )rž   r2   )r£   r+   r%   rŒ   r_   rY   )r;   r   rž   r¥   Z	new_ctyper    rw   r   r   r   rj   ð  s    zMessage.del_paramc             C   sŠ   |  d¡dkst‚| ¡ dkr,| d= d| d< || kr@|| |< d S | j||d}| |= || |< x(|dd … D ]\}}|  ||||¡ qjW d S )Nr”   r   zcontent-typezmime-versionz1.0zMIME-Version)rž   r2   )r)   rq   r+   r£   rl   )r;   rX   rž   r¥   rŸ   r    rw   r   r   r   Úset_type  s    zMessage.set_typec             C   sD   t ƒ }|  d|d¡}||kr*|  d|d¡}||kr6|S t |¡ ¡ S )NÚfilenamezcontent-dispositionro   zcontent-type)r•   r[   r   Úcollapse_rfc2231_valuer   )r;   rƒ   r—   r©   r   r   r   Úget_filename&  s    zMessage.get_filenamec             C   s,   t ƒ }|  d|¡}||kr|S t |¡ ¡ S )NÚboundary)r•   r[   r   rª   Úrstrip)r;   rƒ   r—   r¬   r   r   r   Úget_boundary6  s
    zMessage.get_boundaryc             C   s   t ƒ }|  |d¡}||kr$t d¡‚g }d}xB|D ]:\}}| ¡ dkr^| dd| f¡ d}q2| ||f¡ q2W |s†| dd| f¡ g }xŠ| jD ]€\}	}
|	 ¡ dkrg }x6|D ].\}}
|
dkrÎ| |¡ q²| d||
f ¡ q²W t |¡}| | j	 
|	|¡¡ q’| |	|
f¡ q’W || _d S )	Nzcontent-typezNo Content-Type header foundFr¬   z"%s"Tr   z%s=%s)r•   r¡   r   ZHeaderParseErrorr+   r,   r5   rŒ   r_   r4   rs   )r;   r¬   r—   rŸ   Z	newparamsZfoundpZpkZpvry   Úhrw   r   rv   rt   r   r   r   Úset_boundaryC  s2    


zMessage.set_boundaryc          	   C   sž   t ƒ }|  d|¡}||kr|S t|tƒrr|d p2d}y|d  d¡}t||ƒ}W n  ttfk
rp   |d }Y nX y| d¡ W n tk
r”   |S X | ¡ S )Nr
   r   zus-asciir   zraw-unicode-escape)	r•   r[   r   r   r   r   r\   r]   r+   )r;   rƒ   r—   r
   ZpcharsetrH   r   r   r   Úget_content_charsetq  s     
zMessage.get_content_charsetc                s   ‡ fdd„|   ¡ D ƒS )Nc                s   g | ]}|  ˆ ¡‘qS r   )r±   )r{   Úpart)rƒ   r   r   r|   Ÿ  s    z(Message.get_charsets.<locals>.<listcomp>)Úwalk)r;   rƒ   r   )rƒ   r   Úget_charsets  s    zMessage.get_charsetsc             C   s*   |   d¡}|d krd S t|ƒd  ¡ }|S )Nzcontent-dispositionr   )rY   r   r+   )r;   r$   Úc_dr   r   r   Úget_content_disposition¡  s
    
zMessage.get_content_disposition)r³   )Fr   N)FN)NF)N)N)N)Nr¢   T)Nr¢   T)r¤   TNr   F)r¢   T)r¤   T)N)N)N)N)3Ú__name__Ú
__module__Ú__qualname__r	   r<   r>   r=   rI   rH   rL   rM   rN   rR   rd   ri   rh   rm   rn   rp   rx   rz   r}   r~   r   r   r‚   rY   r„   r‡   rˆ   rk   r“   r™   r›   rœ   r–   r   r¡   r£   r[   rl   rj   r¨   r«   r®   r°   r±   r´   r¶   Zemail.iteratorsr³   r   r   r   r   r   i   s`   


Z
/


				
 
! 
2

 

.

c                   sÞ   e Zd Zd2dd„Zd3‡ fdd„	Zdd„ Zd	d
„ Zdd„ Zd4dd„ZddddhZ	dd„ Z
dd„ Zddœdd„Zddœdd„Zdd„ Zd5dd „Zd6d!d"„Zd7d#d$„Zdd%œd&d'„Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Z‡  ZS )8ÚMIMEPartNc             C   s(   |d krddl m} |}t | |¡ d S )Nr   )Údefault)Zemail.policyr»   r   r<   )r;   r4   r»   r   r   r   r<   ³  s    zMIMEPart.__init__Fc                s0   |d kr| j n|}|d kr |j}tƒ j||dS )N)rA   r4   )r4   Zmax_line_lengthÚsuperr=   )r;   rB   rA   r4   )Ú	__class__r   r   r=   º  s    zMIMEPart.as_stringc             C   s   | j | jjdddS )NT)Úutf8)r4   )r=   r4   Zclone)r;   r   r   r   r>   Ê  s    zMIMEPart.__str__c             C   s    |   d¡}|d krdS |jdkS )Nzcontent-dispositionFÚ
attachment)rY   Zcontent_disposition)r;   rµ   r   r   r   Úis_attachmentÍ  s    
zMIMEPart.is_attachmentc       	      c   s  |  ¡ rd S | ¡  d¡\}}|dkrB||kr>| |¡|fV  d S |dkrNd S |dkr~x"| ¡ D ]}|  ||¡E d H  q`W d S d|kr–| d¡|fV  d }| d¡}|rÌx"| ¡ D ]}|d |kr²|}P q²W |d krì| ¡ }|rè|d nd }|d k	r|  ||¡E d H  d S )Nr”   ÚtextÚ	multipartÚrelatedÚstartz
content-idr   )rÀ   r™   rš   r*   Ú
iter_partsÚ
_find_bodyr[   rd   )	r;   r²   ÚpreferencelistÚmaintypeÚsubtypeZsubpartÚ	candidaterÄ   Zsubpartsr   r   r   rÆ   Ñ  s6    

zMIMEPart._find_body©rÃ   ÚhtmlÚplainc             C   sD   t |ƒ}d }x2|  | |¡D ]"\}}||k r|}|}|dkrP qW |S )Nr   )r   rÆ   )r;   rÇ   Z	best_prioZbodyZprior²   r   r   r   Úget_bodyî  s    
zMIMEPart.get_body)rÁ   rÍ   )rÁ   rÌ   )rÂ   rÃ   )rÂ   Úalternativec       	      c   s  |   ¡  d¡\}}|dks"|dkr&d S |  ¡  ¡ }|dkr®|dkr®|  d¡}|r–d}g }x*|D ]"}| d¡|krvd}q^| |¡ q^W |r–|E d H  d S | d	¡ |E d H  d S g }xN|D ]F}|  ¡  d¡\}}||f| jkrø| 	¡ sø||krø| |¡ q¸|V  q¸W d S )
Nr”   rÂ   rÏ   rÃ   rÄ   Fz
content-idTr   )
r™   rš   rd   r†   r[   rY   r,   ÚpopÚ_body_typesrÀ   )	r;   rÈ   rÉ   r   rÄ   ru   Zattachmentsr²   Úseenr   r   r   Úiter_attachments  s6    






zMIMEPart.iter_attachmentsc             c   s   |   ¡ dkr|  ¡ E d H  d S )NrÂ   )r›   rd   )r;   r   r   r   rÅ   4  s    zMIMEPart.iter_parts)Úcontent_managerc            O   s"   |d kr| j j}|j| f|ž|ŽS )N)r4   rÔ   Úget_content)r;   rÔ   ÚargsÚkwr   r   r   rÕ   <  s    zMIMEPart.get_contentc            O   s&   |d kr| j j}|j| f|ž|Ž d S )N)r4   rÔ   Úset_content)r;   rÔ   rÖ   r×   r   r   r   rØ   A  s    zMIMEPart.set_contentc       
      C   sÚ   |   ¡ dkr6|  ¡ }||f }||kr6td ||¡ƒ‚g }g }x>| jD ]4\}}| ¡  d¡rl| ||f¡ qF| ||f¡ qFW |rªt| ƒ| j	d}	||	_| j
|	_
|	g| _
ng | _
|| _d| | d< |d k	rÖ|  d|¡ d S )NrÂ   zCannot convert {} to {}zcontent-)r4   z
multipart/zContent-Typer¬   )r›   rœ   rq   rr   r5   r+   Ú
startswithr,   rX   r4   r7   rl   )
r;   rÉ   Zdisallowed_subtypesr¬   Zexisting_subtypeZkeep_headersZpart_headersro   r$   r²   r   r   r   Ú_make_multipartF  s,    


zMIMEPart._make_multipartc             C   s   |   dd|¡ d S )NrÃ   )rÏ   Úmixed)rÚ   )r;   r¬   r   r   r   Úmake_relateda  s    zMIMEPart.make_relatedc             C   s   |   dd|¡ d S )NrÏ   )rÛ   )rÚ   )r;   r¬   r   r   r   Úmake_alternatived  s    zMIMEPart.make_alternativec             C   s   |   dd|¡ d S )NrÛ   r   )rÚ   )r;   r¬   r   r   r   Ú
make_mixedg  s    zMIMEPart.make_mixed)Ú_dispc            O   sf   |   ¡ dks|  ¡ |kr(t| d| ƒƒ  t| ƒ| jd}|j||Ž |rXd|krX||d< |  |¡ d S )NrÂ   Zmake_)r4   zcontent-dispositionzContent-Disposition)r›   rœ   ÚgetattrrX   r4   rØ   rR   )r;   Z_subtyperß   rÖ   r×   r²   r   r   r   Ú_add_multipartj  s    zMIMEPart._add_multipartc             O   s   | j d|žddi|—Ž d S )NrÃ   rß   Zinline)rÃ   )rá   )r;   rÖ   r×   r   r   r   Úadd_relatedt  s    zMIMEPart.add_relatedc             O   s   | j d|ž|Ž d S )NrÏ   )rÏ   )rá   )r;   rÖ   r×   r   r   r   Úadd_alternativew  s    zMIMEPart.add_alternativec             O   s   | j d|žddi|—Ž d S )NrÛ   rß   r¿   )rÛ   )rá   )r;   rÖ   r×   r   r   r   Úadd_attachmentz  s    zMIMEPart.add_attachmentc             C   s   g | _ d | _d S )N)r5   r7   )r;   r   r   r   Úclear}  s    zMIMEPart.clearc             C   s   dd„ | j D ƒ| _ d | _d S )Nc             S   s&   g | ]\}}|  ¡  d ¡s||f‘qS )zcontent-)r+   rÙ   )r{   Únrw   r   r   r   r|   ‚  s    z*MIMEPart.clear_content.<locals>.<listcomp>)r5   r7   )r;   r   r   r   Úclear_content  s    zMIMEPart.clear_content)N)FNN)rË   )N)N)N)r·   r¸   r¹   r<   r=   r>   rÀ   rÆ   rÎ   rÑ   rÓ   rÅ   rÕ   rØ   rÚ   rÜ   rÝ   rÞ   rá   râ   rã   rä   rå   rç   Ú__classcell__r   r   )r½   r   rº   ±  s0   

.



rº   c                   s   e Zd Z‡ fdd„Z‡  ZS )r   c                s"   t ƒ j||Ž d| krd| d< d S )NzMIME-Versionz1.0)r¼   rØ   )r;   rÖ   r×   )r½   r   r   rØ   ‰  s    zEmailMessage.set_content)r·   r¸   r¹   rØ   rè   r   r   )r½   r   r   ‡  s   )NT)Ú__all__Úrera   r^   Úior   r   Zemailr   r   Zemail._policybaser   r	   r
   r8   Zemail._encoded_wordsr   rf   rŒ   Úcompiler!   r   r%   r1   r3   r   rº   r   r   r   r   r   Ú<module>   s4   


"      N W