<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]β                 @   s6  d  g Z  d d l 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 d   Z d d d d  Z d d   Z d d   Z Gd d    d   Z Gd d   d e  Z Gd d   d e  Z d S)Message    N)BytesIOStringIO)utils)errors)compat32)charset)decode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]c             C   sJ   t  |   j d  \ } } } | s4 | j   d  f S| j   | j   f S)N;)str	partitionstrip)paramasepb r   ,/opt/alt/python35/lib64/python3.5/message.py_splitparam   s    r   Tc             C   s   | d  k	 r t  |  d k r t | t  rf |  d 7}  t j | d | d | d  } d |  | f Sy | j d  Wn? t k
 r |  d 7}  t j | d d  } d |  | f SYn X| s t j |  r d	 |  t j	 |  f Sd |  | f Sn |  Sd  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   sI  d t  |   }  g  } x,|  d  d  d k rD|  d d   }  |  j d  } xR | d k r |  j d d |  |  j d d |  d r |  j d | d  } qQ W| d k  r t |   } |  d  |  } d | k r| j d  } | d  |  j   j   d | | d d   j   } | j | j    |  | d   }  q W| S)Nr
   r   r   "z\"r   =)r   findcountr   indexr   lowerappend)sZplistendfir   r   r   _parseparamJ   s     ;8r/   c             C   sB   t  |  t  r1 |  d |  d t j |  d  f St j |   Sd  S)Nr   r   r   )r   r   r   unquote)r"   r   r   r   _unquotevalue^   s    "r1   c               @   s  e  Z d  Z e d d  Z d d   Z d d d d d	  Z d
 d   Z d d d d  Z d d   Z	 d d   Z
 d d   Z d d   Z d d d d  Z d 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 d. d/   Z d d0 d1  Z d2 d3   Z d4 d5   Z d d6 d7  Z d8 d9   Z d: d;   Z d< d=   Z  d> d?   Z! d@ dA   Z" dB dC   Z# dD dE   Z$ dF dG   Z% d dH dI dJ dK  Z& d dH dI dL dM  Z' dN dI d dO d dP dQ  Z( dH dI dR dS  Z) dN dI dT dU  Z* d dV dW  Z+ d dX dY  Z, dZ d[   Z- d d\ d]  Z. d d^ d_  Z/ d` da   Z0 d db l1 m2 Z2 d S)cr   c             C   sS   | |  _  g  |  _ d  |  _ d  |  _ d  |  _ d  |  _ |  _ g  |  _ d |  _ d  S)Nz
text/plain)	policy_headers	_unixfrom_payload_charsetZpreambleZepiloguedefects_default_type)selfr2   r   r   r   __init__y   s    						zMessage.__init__c             C   s
   |  j    S)N)	as_string)r9   r   r   r   __str__   s    zMessage.__str__Fr   Nc             C   so   d d l  m } | d  k r% |  j n | } t   } | | d d d | d | } | j |  d | | j   S)Nr   )	Generatormangle_from_Fmaxheaderlenr2   unixfrom)email.generatorr=   r2   r   flattengetvalue)r9   r@   r?   r2   r=   fpgr   r   r   r;      s    			zMessage.as_stringc             C   s
   |  j    S)N)as_bytes)r9   r   r   r   	__bytes__   s    zMessage.__bytes__c             C   si   d d l  m } | d  k r% |  j n | } t   } | | d d d | } | j |  d | | j   S)Nr   )BytesGeneratorr>   Fr2   r@   )rA   rH   r2   r   rB   rC   )r9   r@   r2   rH   rD   rE   r   r   r   rF      s    	zMessage.as_bytesc             C   s   t  |  j t  S)N)r   r5   list)r9   r   r   r   is_multipart   s    zMessage.is_multipartc             C   s   | |  _  d  S)N)r4   )r9   r@   r   r   r   set_unixfrom   s    zMessage.set_unixfromc             C   s   |  j  S)N)r4   )r9   r   r   r   get_unixfrom   s    zMessage.get_unixfromc             C   sW   |  j  d  k r | g |  _  n5 y |  j  j |  Wn t k
 rR t d   Yn Xd  S)Nz=Attach is not valid on a message with a non-multipart payload)r5   r*   AttributeError	TypeError)r9   payloadr   r   r   attach   s    zMessage.attachc             C   sB  |  j    r4 | r d  S| d  k r) |  j S|  j | S| d  k	 rl t |  j t  rl t d t |  j    |  j } t |  j d d   j   } t | t  rRt	 j
 |  r| j d d  } | sRy" | j |  j d d  d  } WqRt k
 r| j d d  } YqRXn= | rRy | j d  } Wn! t k
 rQ| j d  } Yn X| s\| S| d	 k rut j |  S| d
 k rt d j | j     \ } } x! | D] } |  j j |  |  qW| S| d k r+t |  }	 t   }
 y$ t j |	 |
 d d |
 j   SWn t j k
 r*| SYn Xt | t  r>| S| S)NzExpected list, got %szcontent-transfer-encodingr   r   surrogateescaper   replacezraw-unicode-escapezquoted-printablebase64    
x-uuencodeuuencodeuuex-uuequietT)rU   rV   rW   rX   )rJ   r5   r   rI   rN   typer   getr)   r   Z_has_surrogatesr   decode	get_paramLookupErrorUnicodeErrorquopriZdecodestringr	   join
splitlinesr2   Zhandle_defectr   uurC   Error)r9   r.   r\   rO   cteZbpayloadr"   r7   ZdefectZin_fileZout_filer   r   r   get_payload   sV    "	"!		zMessage.get_payloadc             C   s   t  | d  rU | d  k r( | |  _ d  St | t  sC t |  } | j | j  } t  | d  r| | j d d  |  _ n	 | |  _ | d  k	 r |  j |  d  S)Nr   r\   r   rQ   )hasattrr5   r   Charsetr   output_charsetr\   set_charset)r9   rO   r   r   r   r   set_payload0  s    		zMessage.set_payloadc             C   s{  | d  k r& |  j  d  d  |  _ d  St | t  sA t |  } | |  _ d |  k rf |  j d d  d |  k r |  j d d d | j   n |  j d | j    | | j   k r | j |  j  |  _ d |  k rw| j	   } y | |   Wn t
 k
 rv|  j } | rPy | j d d  } Wn$ t k
 rO| j | j  } Yn X| j |  |  _ |  j d |  Yn Xd  S)	Nr   zMIME-Versionz1.0zContent-Typez
text/plainzContent-Transfer-Encodingr   rQ   )	del_paramr6   r   rh   
add_headerZget_output_charset	set_paramZbody_encoder5   Zget_body_encodingrN   r   r_   ri   )r9   r   re   rO   r   r   r   rj   D  s8    			zMessage.set_charsetc             C   s   |  j  S)N)r6   )r9   r   r   r   get_charsets  s    zMessage.get_charsetc             C   s   t  |  j  S)N)r   r3   )r9   r   r   r   __len__{  s    zMessage.__len__c             C   s   |  j  |  S)N)r[   )r9   namer   r   r   __getitem__  s    	zMessage.__getitem__c             C   s   |  j  j |  } | r | j   } d } xW |  j D]L \ } } | j   | k r4 | d 7} | | k r4 t d j | |    q4 W|  j j |  j  j | |   d  S)Nr   r   z/There may be at most {} {} headers in a message)r2   Zheader_max_countr)   r3   
ValueErrorformatr*   header_store_parse)r9   rq   valZ	max_countZlnamefoundkvr   r   r   __setitem__  s    
	zMessage.__setitem__c             C   s^   | j    } g  } x< |  j D]1 \ } } | j    | k r | j | | f  q W| |  _ d  S)N)r)   r3   r*   )r9   rq   
newheadersrx   ry   r   r   r   __delitem__  s    zMessage.__delitem__c             C   s    | j    d d   |  j D k S)Nc             S   s"   g  |  ] \ } } | j     q Sr   )r)   ).0rx   ry   r   r   r   
<listcomp>  s   	 z(Message.__contains__.<locals>.<listcomp>)r)   r3   )r9   rq   r   r   r   __contains__  s    zMessage.__contains__c             c   s#   x |  j  D] \ } } | Vq
 Wd  S)N)r3   )r9   Zfieldr"   r   r   r   __iter__  s    zMessage.__iter__c             C   s   d d   |  j  D S)Nc             S   s   g  |  ] \ } } |  q Sr   r   )r}   rx   ry   r   r   r   r~     s   	 z Message.keys.<locals>.<listcomp>)r3   )r9   r   r   r   keys  s    zMessage.keysc                s     f d d     j  D S)Nc                s+   g  |  ]! \ } }   j  j | |   q Sr   )r2   header_fetch_parse)r}   rx   ry   )r9   r   r   r~     s   	z"Message.values.<locals>.<listcomp>)r3   )r9   r   )r9   r   values  s    zMessage.valuesc                s     f d d     j  D S)Nc                s1   g  |  ]' \ } } |   j  j | |  f  q Sr   )r2   r   )r}   rx   ry   )r9   r   r   r~     s   	z!Message.items.<locals>.<listcomp>)r3   )r9   r   )r9   r   items  s    zMessage.itemsc             C   sO   | j    } x< |  j D]1 \ } } | j    | k r |  j j | |  Sq W| S)N)r)   r3   r2   r   )r9   rq   failobjrx   ry   r   r   r   r[     s
    zMessage.getc             C   s   |  j  j | | f  d  S)N)r3   r*   )r9   rq   r"   r   r   r   set_raw  s    zMessage.set_rawc             C   s   t  |  j j    S)N)iterr3   copy)r9   r   r   r   	raw_items  s    zMessage.raw_itemsc             C   sh   g  } | j    } xE |  j D]: \ } } | j    | k r | j |  j j | |   q W| sd | S| S)N)r)   r3   r*   r2   r   )r9   rq   r   r   rx   ry   r   r   r   get_all  s    	 zMessage.get_allc             K   s   g  } xd | j    D]V \ } } | d  k rG | j | j d d   q | j t | j d d  |   q W| d  k	 r | j d |  t j |  |  | <d  S)N_-r   )r   r*   rR   r#   insert	SEMISPACEra   )r9   _name_valueZ_paramspartsrx   ry   r   r   r   rm     s    &zMessage.add_headerc             C   s   | j    } xp t t t |  j   |  j  D]A \ } \ } } | j    | k r. |  j j | |  |  j | <Pq. Wt |   d  S)N)r)   zipranger   r3   r2   ru   KeyError)r9   r   r   r.   rx   ry   r   r   r   replace_header"  s    4zMessage.replace_headerc             C   sd   t    } |  j d |  } | | k r1 |  j   St |  d j   } | j d  d k r` d S| S)Nzcontent-typer   /r   z
text/plain)objectr[   get_default_typer   r)   r'   )r9   missingr"   ctyper   r   r   get_content_type5  s    	
zMessage.get_content_typec             C   s   |  j    } | j d  d S)Nr   r   )r   split)r9   r   r   r   r   get_content_maintypeM  s    zMessage.get_content_maintypec             C   s   |  j    } | j d  d S)Nr   r   )r   r   )r9   r   r   r   r   get_content_subtypeV  s    zMessage.get_content_subtypec             C   s   |  j  S)N)r8   )r9   r   r   r   r   _  s    zMessage.get_default_typec             C   s   | |  _  d  S)N)r8   )r9   r   r   r   r   set_default_typeh  s    zMessage.set_default_typec       	      C   s   t    } |  j | |  } | | k r+ | Sg  } x t |  D]t } y4 | j d d  \ } } | j   } | j   } Wn$ t k
 r | j   } d } Yn X| j | | f  q> Wt j |  } | S)Nr%   r   r   )	r   r[   r/   r   r   rs   r*   r   Zdecode_params)	r9   r   headerr   r"   paramsprq   rv   r   r   r   _get_params_preserveq  s     	zMessage._get_params_preservezcontent-typeTc             C   sJ   t    } |  j | |  } | | k r+ | S| rB d d   | D S| Sd  S)Nc             S   s(   g  |  ] \ } } | t  |  f  q Sr   )r1   )r}   rx   ry   r   r   r   r~     s   	 z&Message.get_params.<locals>.<listcomp>)r   r   )r9   r   r   r0   r   r   r   r   r   
get_params  s    	zMessage.get_paramsc             C   sc   | |  k r | SxL |  j  | |  D]8 \ } } | j   | j   k r# | rW t |  S| Sq# W| S)N)r   r)   r1   )r9   r   r   r   r0   rx   ry   r   r   r   r]     s    
zMessage.get_paramzContent-Typer   c             C   s  t  | t  r% | r% | | | f } | |  k rL | j   d k rL d } n |  j |  } |  j | d | s | s t | | |  } qGt j | t | | |  g  } n d } x |  j d | d |  D]u \ }	 }
 d } |	 j   | j   k rt | | |  } n t |	 |
 |  } | s.| } q t j | | g  } q W| |  j |  k r| ru|  j	 | |  n |  | =| |  | <d  S)Nzcontent-typez
text/plainr   r   r0   )
r   r   r)   r[   r]   r#   r   ra   r   r   )r9   r   r"   r   requoter   languagerR   r   Z	old_paramZ	old_valueZappend_paramr   r   r   rn     s2    		zMessage.set_paramc             C   s   | |  k r d  Sd } xz |  j  d | d |  D]` \ } } | j   | j   k r/ | sn t | | |  } q/ t j | t | | |  g  } q/ W| |  j |  k r |  | =| |  | <d  S)Nr   r   r0   )r   r)   r#   r   ra   r[   )r9   r   r   r   Z	new_ctyper   ry   r   r   r   rl     s    %	zMessage.del_paramc             C   s   | j  d  d k s t  | j   d k r> |  d =d |  d <| |  k rX | |  | <d  S|  j d | d |  } |  | =| |  | <x4 | d d   D]" \ } } |  j | | | |  q Wd  S)	Nr   r   zcontent-typezmime-versionz1.0zMIME-Versionr   r0   )r'   rs   r)   r   rn   )r9   rZ   r   r   r   r   ry   r   r   r   set_type  s    


zMessage.set_typec             C   sb   t    } |  j d | d  } | | k r? |  j d | d  } | | k rO | St j |  j   S)Nfilenamezcontent-dispositionrq   zcontent-type)r   r]   r   collapse_rfc2231_valuer   )r9   r   r   r   r   r   r   get_filename'  s    	zMessage.get_filenamec             C   s>   t    } |  j d |  } | | k r+ | St j |  j   S)Nboundary)r   r]   r   r   rstrip)r9   r   r   r   r   r   r   get_boundary7  s
    	zMessage.get_boundaryc             C   s  t    } |  j | d  } | | k r6 t j d   g  } d } xY | D]Q \ } } | j   d k r | j d d | f  d } qI | j | | f  qI W| s | j d d | f  g  } x |  j D] \ }	 }
 |	 j   d k rgg  } xG | D]? \ } }
 |
 d k r| j |  q | j d | |
 f  q Wt j |  } | j |  j	 j
 |	 |   q | j |	 |
 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*   r3   r   ra   r2   ru   )r9   r   r   r   Z	newparamsZfoundpZpkZpvr{   hry   r   rx   rv   r   r   r   set_boundaryD  s2    
		zMessage.set_boundaryc             C   s   t    } |  j d |  } | | k r+ | St | t  r | d pG d } y& | d j d  } t | |  } Wn" t t f k
 r | d } Yn Xy | j d  Wn t k
 r | SYn X| j   S)Nr   r   zus-asciir   zraw-unicode-escape)	r   r]   r   r   r   r   r^   r_   r)   )r9   r   r   r   ZpcharsetrF   r   r   r   get_content_charsetr  s     		zMessage.get_content_charsetc                s     f d d   |  j    D S)Nc                s   g  |  ] } | j      q Sr   )r   )r}   part)r   r   r   r~     s   	 z(Message.get_charsets.<locals>.<listcomp>)walk)r9   r   r   )r   r   get_charsets  s    zMessage.get_charsetsc             C   s9   |  j  d  } | d  k r d  St |  d j   } | S)Nzcontent-dispositionr   )r[   r   r)   )r9   r"   c_dr   r   r   get_content_disposition  s
    zMessage.get_content_disposition)r   )3__name__
__module____qualname__r   r:   r<   r;   rG   rF   rJ   rK   rL   rP   rf   rk   rj   ro   rp   rr   rz   r|   r   r   r   r   r   r[   r   r   r   rm   r   r   r   r   r   r   r   r   r]   rn   rl   r   r   r   r   r   r   r   Zemail.iteratorsr   r   r   r   r   r   j   s`   Z/
				!2 .c               @   s  e  Z d  Z d d d  Z d d   Z d d   Z d. d d  Z d/ d0 d1 d2 h Z d d   Z d d   Z	 d d d d  Z
 d d d d  Z d d   Z d d d  Z d d d  Z d d d   Z d! d d" d#  Z d$ d%   Z d& d'   Z d( d)   Z d* d+   Z d, d-   Z d S)3MIMEPartNc             C   s6   | d  k r" d d l  m } | } t j |  |  d  S)Nr   )default)Zemail.policyr   r   r:   )r9   r2   r   r   r   r   r:     s    zMIMEPart.__init__c             C   s,   |  j  d  } | d  k r d S| j d k S)Nzcontent-dispositionF
attachment)r[   Zcontent_disposition)r9   r   r   r   r   is_attachment  s    zMIMEPart.is_attachmentc       	      c   sc  | j    r d  S| j   j d  \ } } | d k r[ | | k rW | j |  | f Vd  S| d k rk d  S| d k r x) | j   D] } |  j | |  Ed  Hq Wd  Sd | k r | j d  | f Vd  } | j d  } | rx+ | j   D] } | d | k r | } Pq W| d  k r>| j   } | r8| d n d  } | d  k	 r_|  j | |  Ed  Hd  S)Nr   text	multipartrelatedstartz
content-idr   )r   r   r   r(   
iter_parts
_find_bodyr]   rf   )	r9   r   preferencelistmaintypesubtypeZsubpart	candidater   Zsubpartsr   r   r   r     s6    zMIMEPart._find_bodyr   htmlplainc             C   s^   t  |  } d  } xE |  j |  |  D]1 \ } } | | k  r% | } | } | d k r% Pq% W| S)Nr   )r   r   )r9   r   Z	best_prioZbodyZprior   r   r   r   get_body  s    
zMIMEPart.get_bodyr   r   alternativec       	      c   sd  |  j    j d  \ } } | d k s3 | d k r7 d  S|  j   j   } | d k r | d k r |  j d  } | r d } g  } x9 | D]1 } | j d  | k r d } q | j |  q W| r | Ed  Hd  S| j d	  | Ed  Hd  Sg  } xl | D]d } | j    j d  \ } } | | f |  j k rW| j	   rW| | k rW| j |  q | Vq Wd  S)
Nr   r   r   r   r   Fz
content-idTr   )
r   r   rf   r   r]   r[   r*   pop_body_typesr   )	r9   r   r   r   r   rw   Zattachmentsr   seenr   r   r   iter_attachments  s6    			zMIMEPart.iter_attachmentsc             c   s%   |  j    d k r! |  j   Ed  Hd  S)Nr   )r   rf   )r9   r   r   r   r   !  s    zMIMEPart.iter_partscontent_managerc            O   s+   | d  k r |  j  j } | j |  | |  S)N)r2   r   get_content)r9   r   argskwr   r   r   r   )  s    zMIMEPart.get_contentc            O   s/   | d  k r |  j  j } | j |  | |  d  S)N)r2   r   set_content)r9   r   r   r   r   r   r   r   .  s    zMIMEPart.set_contentc       
      C   s5  |  j    d k rO |  j   } | | f } | | k rO t d j | |    g  } g  } xU |  j D]J \ } } | j   j d  r | j | | f  qe | j | | f  qe W| r t |   d |  j	  }	 | |	 _ |  j
 |	 _
 |	 g |  _
 n	 g  |  _
 | |  _ d | |  d <| d  k	 r1|  j d |  d  S)Nr   zCannot convert {} to {}zcontent-r2   z
multipart/zContent-Typer   )r   r   rs   rt   r3   r)   
startswithr*   rZ   r2   r5   rn   )
r9   r   Zdisallowed_subtypesr   Zexisting_subtypeZkeep_headersZpart_headersrq   r"   r   r   r   r   _make_multipart3  s,    				zMIMEPart._make_multipartc             C   s   |  j  d d |  d  S)Nr   r   mixed)r   r   )r   )r9   r   r   r   r   make_relatedN  s    zMIMEPart.make_relatedc             C   s   |  j  d d |  d  S)Nr   r   )r   )r   )r9   r   r   r   r   make_alternativeQ  s    zMIMEPart.make_alternativec             C   s   |  j  d f  |  d  S)Nr   )r   )r9   r   r   r   r   
make_mixedT  s    zMIMEPart.make_mixed_dispc            O   s   |  j    d k s$ |  j   | k r8 t |  d |    t |   d |  j  } | j | |   | r| d | k r| | | d <|  j |  d  S)Nr   Zmake_r2   zcontent-dispositionzContent-Disposition)r   r   getattrrZ   r2   r   rP   )r9   Z_subtyper   r   r   r   r   r   r   _add_multipartW  s    
zMIMEPart._add_multipartc             O   s   |  j  d | d d | d  S)Nr   r   Zinline)r   )r9   r   r   r   r   r   add_relateda  s    zMIMEPart.add_relatedc             O   s   |  j  d | |  d  S)Nr   )r   )r9   r   r   r   r   r   add_alternatived  s    zMIMEPart.add_alternativec             O   s   |  j  d | d d | d  S)Nr   r   r   )r   )r9   r   r   r   r   r   add_attachmentg  s    zMIMEPart.add_attachmentc             C   s   g  |  _  d  |  _ d  S)N)r3   r5   )r9   r   r   r   clearj  s    	zMIMEPart.clearc             C   s&   d d   |  j  D |  _  d  |  _ d  S)Nc             S   s7   g  |  ]- \ } } | j    j d   s | | f  q S)zcontent-)r)   r   )r}   nry   r   r   r   r~   o  s   	 	z*MIMEPart.clear_content.<locals>.<listcomp>)r3   r5   )r9   r   r   r   clear_contentn  s    zMIMEPart.clear_content)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     s,   	.
r   c                   s"   e  Z d  Z   f d d   Z   S)EmailMessagec                s-   t    j | |   d |  k r) d |  d <d  S)NzMIME-Versionz1.0)superr   )r9   r   r   )	__class__r   r   r   v  s    zEmailMessage.set_content)r   r   r   r   r   r   )r   r   r   t  s   r   )__all__rerc   r`   warningsior   r   Zemailr   r   Zemail._policybaser   r   r6   Zemail._encoded_wordsr	   rh   r   compiler   r   r#   r/   r1   r   r   r   r   r   r   r   <module>   s.   		
"   K