grthtrhthjhtyjytjytkergtrhtrjytjerhrfhU e5dà·ã@sØddgZddlZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z ddlm Zdd lmZejZd Ze d ¡Zd d „Zddd„Zdd„Zdd„ZGdd„dƒZGdd„deƒZGdd„deƒZdS)ÚMessageÚ EmailMessageéN)ÚBytesIOÚStringIO)Úutils)Úerrors)ÚPolicyÚcompat32©Úcharset)Údecode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]cCs4t|ƒ d¡\}}}|s$| ¡dfS| ¡| ¡fS)Nú;)ÚstrÚ partitionÚstrip)ÚparamÚaÚsepÚb©rú%/usr/lib64/python3.8/email/message.pyÚ _splitparams rTcCsÈ|dk rÀt|ƒdkrÀt|tƒrL|d7}t |d|d|d¡}d||fSz| d¡Wn6tk r�|d7}t |dd¡}d||fYSX|s t |¡r²d |t  |¡fSd||fSn|SdS) NrÚ*ééú%s=%sÚasciizutf-8Úz%s="%s") ÚlenÚ isinstanceÚtuplerZencode_rfc2231ÚencodeÚUnicodeEncodeErrorÚ tspecialsÚsearchÚquote)rÚvaluer%rrrÚ _formatparam's   r'cCsêdt|ƒ}g}|dd…dkræ|dd…}| d¡}|dkrp| dd|¡| dd|¡drp| d|d¡}q6|dkr€t|ƒ}|d|…}d|krÊ| d¡}|d|… ¡ ¡d||dd… ¡}| | ¡¡||d…}q|S)Nr rrú"z\"rú=)rÚfindÚcountrÚindexrÚlowerÚappend)ÚsZplistÚendÚfÚirrrÚ _parseparamIs    (  ,r3cCs4t|tƒr&|d|dt |d¡fSt |¡SdS)Nrrr)rr rÚunquote)r&rrrÚ _unquotevalue]s r5c@s¢eZdZefdd„Zdd„Zdcdd „Zd d „Zddd d „Zdd„Z dd„Z dd„Z dd„Z dedd„Z dfdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zdgd0d1„Zd2d3„Zd4d5„Zdhd6d7„Zd8d9„Zd:d;„Zdd?„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„Z0ddbl1m2Z2dS)rrcCs:||_g|_d|_d|_d|_d|_|_g|_d|_dS)Nú text/plain) ÚpolicyÚ_headersÚ _unixfromÚ_payloadÚ_charsetZpreambleZepilogueÚdefectsÚ _default_type)Úselfr7rrrÚ__init__xs zMessage.__init__cCs| ¡S©N)Ú as_string©r>rrrÚ__str__„szMessage.__str__FrNcCsJddlm}|dkr|jn|}tƒ}||d||d�}|j||d�| ¡S)Nr)Ú GeneratorF)Ú mangle_from_Ú maxheaderlenr7©Úunixfrom)Úemail.generatorrDr7rÚflattenÚgetvalue)r>rHrFr7rDÚfpÚgrrrrA‰s ýzMessage.as_stringcCs| ¡Sr@)Úas_bytesrBrrrÚ __bytes__¡szMessage.__bytes__cCsHddlm}|dkr|jn|}tƒ}||d|d�}|j||d�| ¡S)Nr)ÚBytesGeneratorF)rEr7rG)rIrPr7rrJrK)r>rHr7rPrLrMrrrrN¦s  zMessage.as_bytescCs t|jtƒSr@)rr:ÚlistrBrrrÚ is_multipartµszMessage.is_multipartcCs ||_dSr@©r9)r>rHrrrÚ set_unixfrom¼szMessage.set_unixfromcCs|jSr@rSrBrrrÚ get_unixfrom¿szMessage.get_unixfromcCsF|jdkr|g|_n.z|j |¡Wntk r@tdƒ‚YnXdS)Nz=Attach is not valid on a message with a non-multipart payload)r:r.ÚAttributeErrorÚ TypeError)r>ÚpayloadrrrÚattachÅs   zMessage.attachc Csº| ¡r(|rdS|dkr|jS|j|S|dk rNt|jtƒsNtdt|jƒƒ‚|j}t| dd¡ƒ ¡}t|tƒrút   |¡rÈ|  dd¡}|súz|  |  dd¡d¡}Wqútk rÄ|  dd¡}YqúXn2|rúz|  d¡}Wntk rø|  d¡}YnX|�s|S|d k�rt |¡S|d k�rVtd  | ¡¡ƒ\}}|D]}|j ||¡�q<|S|d k�r¦t|ƒ} tƒ} ztj | | d d�|  ¡WStjk �r¤|YSXt|tƒ�r¶|S|S)NzExpected list, got %szcontent-transfer-encodingrrÚsurrogateescaper Úreplaceúraw-unicode-escapezquoted-printableÚbase64ó)z x-uuencodeZuuencodeZuuezx-uueT)Úquiet)rRr:rrQrWÚtyperÚgetr-rZ_has_surrogatesr!ÚdecodeÚ get_paramÚ LookupErrorÚ UnicodeErrorÚquopriZ decodestringr ÚjoinÚ splitlinesr7Z handle_defectrÚuurKÚError) r>r2rbrXÚcteZbpayloadr&r<ZdefectZin_fileZout_filerrrÚ get_payloadÕsV"           zMessage.get_payloadcCspt|dƒr:|dkr||_dSt|tƒs.t|ƒ}| |j¡}t|dƒrT| dd¡|_n||_|dk rl| |¡dS)Nr!rbrrZ)Úhasattrr:rÚCharsetr!Úoutput_charsetrbÚ set_charset)r>rXr rrrÚ set_payload/s    zMessage.set_payloadc Cs|dkr| d¡d|_dSt|tƒs.t|ƒ}||_d|krH| dd¡d|krf|jdd| ¡d�n| d| ¡¡|| ¡kr�| |j¡|_d|k�r|  ¡}z ||ƒWnjt k �r|j}|rüz|  dd ¡}Wn t k rú|  |j ¡}YnX| |¡|_| d|¡YnXdS) Nr ú MIME-Versionú1.0ú Content-Typer6r zContent-Transfer-EncodingrrZ)Ú del_paramr;rrnÚ add_headerZget_output_charsetÚ set_paramZ body_encoder:Zget_body_encodingrWr!rero)r>r rkrXrrrrpCs:   ÿ    zMessage.set_charsetcCs|jSr@)r;rBrrrÚ get_charsetrszMessage.get_charsetcCs t|jƒSr@)rr8rBrrrÚ__len__zszMessage.__len__cCs | |¡Sr@)ra©r>ÚnamerrrÚ __getitem__~s zMessage.__getitem__cCsr|j |¡}|rX| ¡}d}|jD]4\}}| ¡|kr"|d7}||kr"td ||¡ƒ‚q"|j |j ||¡¡dS)Nrrz/There may be at most {} {} headers in a message)r7Zheader_max_countr-r8Ú ValueErrorÚformatr.Úheader_store_parse)r>r{ÚvalZ max_countZlnameÚfoundÚkÚvrrrÚ __setitem__‰s  ÿzMessage.__setitem__cCs@| ¡}g}|jD]"\}}| ¡|kr| ||f¡q||_dSr@)r-r8r.)r>r{Ú newheadersr‚rƒrrrÚ __delitem__›s  zMessage.__delitem__cCs| ¡dd„|jDƒkS)NcSsg|]\}}| ¡‘qSr)r-©Ú.0r‚rƒrrrÚ ¨sz(Message.__contains__..)r-r8rzrrrÚ __contains__§szMessage.__contains__ccs|jD]\}}|VqdSr@©r8)r>Zfieldr&rrrÚ__iter__ªszMessage.__iter__cCsdd„|jDƒS)NcSsg|] \}}|‘qSrrr‡rrrr‰¶sz Message.keys..r‹rBrrrÚkeys®sz Message.keyscs‡fdd„ˆjDƒS)Ncsg|]\}}ˆj ||¡‘qSr©r7Úheader_fetch_parser‡rBrrr‰Àsÿz"Message.values..r‹rBrrBrÚvalues¸s ÿzMessage.valuescs‡fdd„ˆjDƒS)Ncs"g|]\}}|ˆj ||¡f‘qSrrŽr‡rBrrr‰Ësÿz!Message.items..r‹rBrrBrÚitemsÃs ÿz Message.itemscCs:| ¡}|jD]&\}}| ¡|kr|j ||¡Sq|Sr@)r-r8r7r�)r>r{Úfailobjr‚rƒrrrraÎs  z Message.getcCs|j ||f¡dSr@)r8r.)r>r{r&rrrÚset_rawßszMessage.set_rawcCst|j ¡ƒSr@)Úiterr8ÚcopyrBrrrÚ raw_itemsæszMessage.raw_itemscCsHg}| ¡}|jD](\}}| ¡|kr| |j ||¡¡q|sD|S|Sr@)r-r8r.r7r�)r>r{r’r�r‚rƒrrrÚget_allñs  zMessage.get_allcKspg}| ¡D]<\}}|dkr0| | dd¡¡q | t| dd¡|ƒ¡q |dk r^| d|¡t |¡||<dS)NÚ_ú-r)r‘r.r[r'ÚinsertÚ SEMISPACErg)r>Ú_nameÚ_valueZ_paramsÚpartsr‚rƒrrrrvs zMessage.add_headercCs\| ¡}ttt|jƒƒ|jƒD]0\}\}}| ¡|kr|j ||¡|j|<qXqt|ƒ‚dSr@)r-ÚzipÚrangerr8r7rÚKeyError)r>rœr�r2r‚rƒrrrÚreplace_header!s " zMessage.replace_headercCsHtƒ}| d|¡}||kr"| ¡St|ƒd ¡}| d¡dkrDdS|S)Nú content-typerú/rr6)ÚobjectraÚget_default_typerr-r+)r>Úmissingr&ÚctyperrrÚget_content_type4s  zMessage.get_content_typecCs| ¡}| d¡dS)Nr¤r©r©Úsplit©r>r¨rrrÚget_content_maintypeLszMessage.get_content_maintypecCs| ¡}| d¡dS)Nr¤rrªr¬rrrÚget_content_subtypeUszMessage.get_content_subtypecCs|jSr@©r=rBrrrr¦^szMessage.get_default_typecCs ||_dSr@r¯r¬rrrÚset_default_typegszMessage.set_default_typec Cs’tƒ}| ||¡}||kr|Sg}t|ƒD]X}z$| dd¡\}}| ¡}| ¡}Wn tk rr| ¡}d}YnX| ||f¡q*t |¡}|S)Nr)rr) r¥rar3r«rr}r.rZ decode_params) r>r’Úheaderr§r&ÚparamsÚpr{r€rrrÚ_get_params_preserveps      zMessage._get_params_preserver£TcCs8tƒ}| ||¡}||kr|S|r0dd„|DƒS|SdS)NcSsg|]\}}|t|ƒf‘qSr)r5r‡rrrr‰—sz&Message.get_params..)r¥r´)r>r’r±r4r§r²rrrÚ get_params…s  zMessage.get_paramscCsN||kr |S| ||¡D]0\}}| ¡| ¡kr|r@t|ƒS|Sq|Sr@)r´r-r5)r>rr’r±r4r‚rƒrrrrc›s  zMessage.get_paramrtrc Cs t|tƒs|r|||f}||kr2| ¡dkr2d}n | |¡}|j||d�st|s\t|||ƒ}qÖt |t|||ƒg¡}nbd}|j||d�D]N\} } d} |  ¡| ¡kr°t|||ƒ} n t| | |ƒ} |sÆ| }q†t || g¡}q†|| |¡k�r|rø|  ||¡n||=|||<dS)Nr£r6)r±r©r±r4) rr r-rarcr'r›rgrµr¢) r>rr&r±Úrequoter Zlanguager[r¨Z old_paramÚ old_valueZ append_paramrrrrw½s6  ÿÿ zMessage.set_paramcCs€||kr dSd}|j||d�D]@\}}| ¡| ¡kr|sHt|||ƒ}qt |t|||ƒg¡}q|| |¡kr|||=|||<dS)Nrr¶)rµr-r'r›rgra)r>rr±r·Z new_ctyper³rƒrrrruðs ÿzMessage.del_paramcCs†| d¡dkst‚| ¡dkr,|d=d|d<||kr@|||<dS|j||d�}||=|||<|dd…D]\}}| ||||¡qhdS)Nr¤rr£z mime-versionrsrrr¶)r+r}r-rµrw)r>r`r±r·r²r³rƒrrrÚset_types zMessage.set_typecCsDtƒ}| d|d¡}||kr*| d|d¡}||kr6|St |¡ ¡S)NÚfilenameúcontent-dispositionr{r£)r¥rcrÚcollapse_rfc2231_valuer)r>r’r§rºrrrÚ get_filename&szMessage.get_filenamecCs,tƒ}| d|¡}||kr|St |¡ ¡S)NÚboundary)r¥rcrr¼Úrstrip)r>r’r§r¾rrrÚ get_boundary6s  zMessage.get_boundarycCstƒ}| |d¡}||kr$t d¡‚g}d}|D]:\}}| ¡dkr\| dd|f¡d}q0| ||f¡q0|s‚| dd|f¡g}|jD]z\} } |  ¡dkrøg} |D].\} } | dkrÄ|  | ¡q¨|  d| | f¡q¨t | ¡} | |j   | | ¡¡qŒ| | | f¡qŒ||_dS) Nr£zNo Content-Type header foundFr¾z"%s"Trr) r¥r´rZHeaderParseErrorr-r.r8r›rgr7r)r>r¾r§r²Z newparamsZfoundpZpkZpvr…Úhrƒržr‚r€rrrÚ set_boundaryCs2         zMessage.set_boundaryc Cs¢tƒ}| d|¡}||kr|St|tƒrr|dp2d}z|d d¡}t||ƒ}Wn ttfk rp|d}YnXz| d¡Wntk r˜|YSX| ¡S)Nr rzus-asciirr\) r¥rcrr r!rrdrer-)r>r’r§r ZpcharsetrNrrrÚget_content_charsetqs     zMessage.get_content_charsetcs‡fdd„| ¡DƒS)Ncsg|]}| ˆ¡‘qSr)rÃ)rˆÚpart©r’rrr‰Ÿsz(Message.get_charsets..©Úwalk)r>r’rrÅrÚ get_charsets�szMessage.get_charsetscCs*| d¡}|dkrdSt|ƒd ¡}|S)Nr»r)rarr-)r>r&Úc_drrrÚget_content_disposition¡s  zMessage.get_content_dispositionrÆ)FrN)FN)NF)N)N)N)Nr£T)Nr£T)rtTNrF)r£T)rtT)N)N)N)N)3Ú__name__Ú __module__Ú __qualname__r r?rCrArOrNrRrTrUrYrlrqrprxryr|r„r†rŠrŒr�r�r‘rar“r–r—rvr¢r©r­r®r¦r°r´rµrcrwrur¹r½rÀrÂrÃrÈrÊZemail.iteratorsrÇrrrrrish    Z /           ÿ "ÿ 3   .   csÞeZdZd2dd„Zd3‡fdd„ Zdd„Zd d „Zd d „Zd4dd„ZddddhZ dd„Z dd„Z ddœdd„Z ddœdd„Z dd„Zd5dd „Zd6d!d"„Zd7d#d$„Zdd%œd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Z‡ZS)8ÚMIMEPartNcCs(|dkrddlm}|}t ||¡dS)Nr)Údefault)Z email.policyrÏrr?)r>r7rÏrrrr?³s zMIMEPart.__init__Fcs0|dkr|jn|}|dkr |j}tƒj||d�S)N)rFr7)r7Zmax_line_lengthÚsuperrA)r>rHrFr7©Ú __class__rrrAºs zMIMEPart.as_stringcCs|j|jjdd�d�S)NT)Úutf8©r7)rAr7ZclonerBrrrrCÊszMIMEPart.__str__cCs | d¡}|dkrdS|jdkS)Nr»FÚ attachment)raZcontent_disposition)r>rÉrrrÚ is_attachmentÍs zMIMEPart.is_attachmentc cs| ¡r dS| ¡ d¡\}}|dkrB||kr>| |¡|fVdS|dkrNdS|dkrz| ¡D]}| ||¡EdHq^dSd|kr’| d¡|fVd}| d¡}|rÆ| ¡D]}|d|kr¬|}qÆq¬|dkræ| ¡}|râ|dnd}|dk �r| ||¡EdHdS)Nr¤ÚtextÚ multipartÚrelatedÚstartú content-idr)rÖr©r«r,Ú iter_partsÚ _find_bodyrcrl) r>rÄÚpreferencelistÚmaintypeÚsubtypeZsubpartÚ candidaterÚZsubpartsrrrrÝÑs6     zMIMEPart._find_body©rÙÚhtmlÚplaincCsBt|ƒ}d}| ||¡D]$\}}||kr|}|}|dkrq>q|S)Nr)rrÝ)r>rÞZ best_prioZbodyZpriorÄrrrÚget_bodyîs zMIMEPart.get_body)r×rä)r×rã)rØrÙ)rØÚ alternativec cs$| ¡ d¡\}}|dks"|dkr&dS| ¡}z | ¡}Wntk rPYdSX|dkrÊ|dkrÊ| d¡}|r²d}g}|D]"}| d¡|kr”d}q|| |¡q||r²|EdHdS| d ¡|EdHdSg} |D]L}| ¡ d¡\}}||f|j k�r|  ¡�s|| k�r|  |¡qÒ|VqÒdS) Nr¤rØrærÙrÚFrÛTr) r©r«rlr•rVrcrar.ÚpopÚ _body_typesrÖ) r>rßràrXržrÚr�Z attachmentsrÄÚseenrrrÚiter_attachmentssD       ÿÿ zMIMEPart.iter_attachmentsccs| ¡dkr| ¡EdHdS)NrØ)r­rlrBrrrrÜ=s zMIMEPart.iter_parts)Úcontent_managercOs"|dkr|jj}|j|f|ž|ŽSr@)r7rëÚ get_content©r>rëÚargsÚkwrrrrìEszMIMEPart.get_contentcOs&|dkr|jj}|j|f|ž|ŽdSr@)r7rëÚ set_contentrírrrrðJszMIMEPart.set_contentc CsÖ| ¡dkr6| ¡}||f}||kr6td ||¡ƒ‚g}g}|jD]4\}}| ¡ d¡rj| ||f¡qD| ||f¡qD|r¦t|ƒ|j d�} || _|j | _ | g|_ ng|_ ||_d||d<|dk rÒ|  d|¡dS)NrØzCannot convert {} to {}úcontent-rÔz multipart/rtr¾) r­r®r}r~r8r-Ú startswithr.r`r7r:rw) r>ràZdisallowed_subtypesr¾Zexisting_subtypeZ keep_headersZ part_headersr{r&rÄrrrÚ_make_multipartOs0  ÿ  zMIMEPart._make_multipartcCs| dd|¡dS)NrÙ)ræÚmixed©ró©r>r¾rrrÚ make_relatedjszMIMEPart.make_relatedcCs| dd|¡dS)Nræ)rôrõrörrrÚmake_alternativemszMIMEPart.make_alternativecCs| dd|¡dS)NrôrrõrörrrÚ make_mixedpszMIMEPart.make_mixed)Ú_dispcOsf| ¡dks| ¡|kr(t|d|ƒƒt|ƒ|jd�}|j||Ž|rXd|krX||d<| |¡dS)NrØZmake_rÔr»zContent-Disposition)r­r®Úgetattrr`r7rðrY)r>Z_subtyperúrîrïrÄrrrÚ_add_multipartss  ÿ  zMIMEPart._add_multipartcOs|jd|žddi|—ŽdS)NrÙrúZinline)rÙ©rü©r>rîrïrrrÚ add_related}szMIMEPart.add_relatedcOs|jd|ž|ŽdS)Nræ)rærýrþrrrÚadd_alternative€szMIMEPart.add_alternativecOs|jd|žddi|—ŽdS)NrôrúrÕ)rôrýrþrrrÚadd_attachmentƒszMIMEPart.add_attachmentcCsg|_d|_dSr@©r8r:rBrrrÚclear†szMIMEPart.clearcCsdd„|jDƒ|_d|_dS)NcSs&g|]\}}| ¡ d¡s||f‘qS)rñ)r-rò)rˆÚnrƒrrrr‰‹sÿz*MIMEPart.clear_content..rrBrrrÚ clear_contentŠszMIMEPart.clear_content)N)FNN)râ)N)N)N)rËrÌrÍr?rArCrÖrÝrårèrêrÜrìrðrór÷rørùrürÿrrrrÚ __classcell__rrrÑrrαs2  ý7    rÎcseZdZ‡fdd„Z‡ZS)rcs"tƒj||Žd|krd|d<dS)Nrrrs)rÐrðrþrÑrrrð’szEmailMessage.set_content)rËrÌrÍrðrrrrÑrr�s)NT)Ú__all__ÚrerirfÚiorrZemailrrZemail._policybaserr r r;Zemail._encoded_wordsr rnr›Úcompiler#rr'r3r5rrÎrrrrrÚs4      " N`