£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~d                 @   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   2/opt/alt/python37/lib64/python3.7/email/message.py_splitparam   s    r   Tc             C   s   |d k	rt |dkrt|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 |st|rd	| 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 rt| }| 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rt	
|r|dd}|sy|| ddd}W q tk
r   |dd}Y qX n2|ry|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rt|}	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}|ry|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|||}qt|t|||g}nfd}x`| j||dD ]N\}	}
d}|	 | krt|||}nt|	|
|}|s|}qt||g}qW || |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  qW t|}|| j	
|	| q||	|
f qW || _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}|rx"| D ]}|d |kr|}P qW |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 |  }y| }W n tk
rN   d S X |dkr|dkr| d}|rd}g }x*|D ]"}|d|krd}q||| q|W |r|E d H  d S |d	 |E d H  d S g }	xT|D ]L}|  d\}}||f| j	kr|
 s||	kr|	| q|V  qW d S )
Nr   r   r   r   r   Fz
content-idTr   )r   r   rd   r   rO   r[   rY   r,   pop_body_typesr   )
r;   r   r   rQ   r   r   ru   Zattachmentsr   seenr   r   r   iter_attachments  s>    






zMIMEPart.iter_attachmentsc             c   s   |   dkr|  E d H  d S )Nr   )r   rd   )r;   r   r   r   r   =  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   E  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   J  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 |rt| | 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_multipartO  s,    


zMIMEPart._make_multipartc             C   s   |  dd| d S )Nr   )r   mixed)r   )r;   r   r   r   r   make_relatedj  s    zMIMEPart.make_relatedc             C   s   |  dd| d S )Nr   )r   )r   )r;   r   r   r   r   make_alternativem  s    zMIMEPart.make_alternativec             C   s   |  dd| d S )Nr   r   )r   )r;   r   r   r   r   
make_mixedp  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_multiparts  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_related}  s    zMIMEPart.add_relatedc             O   s   | j d|| d S )Nr   )r   )r   )r;   r   r   r   r   r   add_alternative  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_attachment  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   

7



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 `