o 0¦i‰¸ã@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ú4/opt/alt/python310/lib64/python3.10/email/message.pyÚ _splitparams rTcCs |dur_t|ƒdkr_t|tƒr'|d7}t |d|d|d¡}d||fSz| d¡WntyH|d7}t |dd¡}d||fYSw|sPt |¡rYd |t  |¡fSd||fS|S) NrÚ*ééú%s=%sÚasciizutf-8Úz%s="%s") ÚlenÚ isinstanceÚtuplerZencode_rfc2231ÚencodeÚUnicodeEncodeErrorÚ tspecialsÚsearchÚquote)rÚvaluer%rrrÚ _formatparam's"   ý r'cCsdt|ƒ}g}d}| d|¡|krŒ|d7}| d|¡}|d}}|dkrK|| d||¡| d||¡7}|ddkrd?„Z!d@dA„Z"dBdC„Z#dDdE„Z$dFdG„Z%dgdJdK„Z& H IdgdLdM„Z' I dhdPdQ„Z(didRdS„Z)djdTdU„Z*dfdVdW„Z+dfdXdY„Z,dZd[„Z-dfd\d]„Z.dfd^d_„Z/d`da„Z0ddbl1m2Z2dS)krcCs:||_g|_d|_d|_d|_d|_|_g|_d|_dS)Nú text/plain) ÚpolicyÚ_headersÚ _unixfromÚ_payloadÚ_charsetZpreambleZepilogueÚdefectsÚ _default_type)Úselfr:rrrÚ__init__~s  zMessage.__init__cCó | ¡S©N)Ú as_string©rArrrÚ__str__ŠózMessage.__str__FrNcCsL ddlm}|dur|jn|}tƒ}||d||d}|j||d| ¡S)Nr)Ú GeneratorF)Ú mangle_from_Ú maxheaderlenr:©Úunixfrom)Úemail.generatorrIr:rÚflattenÚgetvalue)rArMrKr:rIÚfpÚgrrrrEs ýzMessage.as_stringcCrCrD)Úas_bytesrFrrrÚ __bytes__§rHzMessage.__bytes__cCsJ ddlm}|dur|jn|}tƒ}||d|d}|j||d| ¡S)Nr)ÚBytesGeneratorF)rJr:rL)rNrUr:rrOrP)rArMr:rUrQrRrrrrS¬s zMessage.as_bytescCs t|jtƒSrD)rr=ÚlistrFrrrÚ is_multipart»s zMessage.is_multipartcCs ||_dSrD©r<)rArMrrrÚ set_unixfromÂs zMessage.set_unixfromcCs|jSrDrXrFrrrÚ get_unixfromÅszMessage.get_unixfromcCsB |jdur |g|_dSz |j |¡WdSty tdƒ‚w)Nz=Attach is not valid on a message with a non-multipart payload)r=r0ÚAttributeErrorÚ TypeError)rAÚpayloadrrrÚattachËs   ÿzMessage.attachc Cs¨ | ¡r|r dS|dur|jS|j|S|dur(t|jtƒs(tdt|jƒƒ‚|j}t| dd¡ƒ ¡}t|tƒr|t   |¡rd|  dd¡}|scz |  |  dd¡d¡}Wn(tyb|  dd¡}Ynwn|r|z|  d¡}Wnty{|  d¡}Ynw|s€|S|d kr‰t |¡S|d kr¦td  | ¡¡ƒ\}}|D] }|j ||¡qš|S|d vrËt|ƒ} tƒ} z tj | | d d|  ¡WStjyÊ|YSwt|tƒrÒ|S|S)NzExpected list, got %szcontent-transfer-encodingrrÚsurrogateescaper Úreplaceúraw-unicode-escapezquoted-printableÚbase64ó)z x-uuencodeZuuencodeZuuezx-uueT)Úquiet)rWr=rrVr\ÚtyperÚgetr.rZ_has_surrogatesr!ÚdecodeÚ get_paramÚ LookupErrorÚ UnicodeErrorÚquopriZ decodestringr ÚjoinÚ splitlinesr:Z handle_defectrÚuurPÚError) rAr4rgr]ÚcteZbpayloadr&r?ZdefectZin_fileZout_filerrrÚ get_payloadÛs`!     ÿý û  þ zMessage.get_payloadcCsv t|dƒr|dur||_dSt|tƒst|ƒ}| |j¡}t|dƒr+| dd¡|_n||_|dur9| |¡dSdS)Nr!rgrr_)Úhasattrr=rÚCharsetr!Úoutput_charsetrgÚ set_charset)rAr]r rrrÚ set_payload5s    ÿzMessage.set_payloadc Cs |dur| d¡d|_dSt|tƒst|ƒ}||_d|vr%| dd¡d|vr4|jdd| ¡dn| d| ¡¡|| ¡krI| |j¡|_d|vrŒ|  ¡}z||ƒWdSt y‹|j}|r|z|  dd ¡}Wnt y{|  |j ¡}Ynw| |¡|_| d|¡YdSwdS) Nr ú MIME-Versionú1.0ú Content-Typer9r zContent-Transfer-Encodingrr_)Ú del_paramr>rrsÚ add_headerZget_output_charsetÚ set_paramZ body_encoder=Zget_body_encodingr\r!rjrt)rAr rpr]rrrruIsB   ÿ   ÿ õüzMessage.set_charsetcCó |jSrD)r>rFrrrÚ get_charsetxszMessage.get_charsetcCs t|jƒSrD)rr;rFrrrÚ__len__€s zMessage.__len__cCs | |¡SrD)rf©rAÚnamerrrÚ __getitem__„s zMessage.__getitem__cCst |j |¡}|r-| ¡}d}|jD]\}}| ¡|kr,|d7}||kr,td ||¡ƒ‚q|j |j ||¡¡dS)Nrrz/There may be at most {} {} headers in a message)r:Zheader_max_countr.r;Ú ValueErrorÚformatr0Úheader_store_parse)rArÚvalZ max_countZlnameÚfoundÚkÚvrrrÚ __setitem__s  ÿ€zMessage.__setitem__cCsB | ¡}g}|jD]\}}| ¡|kr| ||f¡q ||_dSrD)r.r;r0)rArÚ newheadersrˆr‰rrrÚ __delitem__¡s € zMessage.__delitem__cCs| ¡dd„|jDƒvS)NcSsg|]\}}| ¡‘qSr)r.©Ú.0rˆr‰rrrÚ ®sz(Message.__contains__..)r.r;r€rrrÚ __contains__­szMessage.__contains__ccs|jD]\}}|VqdSrD©r;)rAZfieldr&rrrÚ__iter__°s€ÿzMessage.__iter__cCs dd„|jDƒS)NcSsg|]\}}|‘qSrrrrrrr¼sz Message.keys..r‘rFrrrÚkeys´sz Message.keyscó ‡fdd„ˆjDƒS)Ncsg|] \}}ˆj ||¡‘qSr©r:Úheader_fetch_parserrFrrrÆsÿz"Message.values..r‘rFrrFrÚvalues¾ó ÿzMessage.valuescr”)Ncs"g|] \}}|ˆj ||¡f‘qSrr•rrFrrrÑsÿz!Message.items..r‘rFrrFrÚitemsÉr˜z Message.itemscCs< | ¡}|jD]\}}| ¡|kr|j ||¡Sq|SrD)r.r;r:r–)rArÚfailobjrˆr‰rrrrfÔs ÿz Message.getcCs |j ||f¡dSrD)r;r0)rArr&rrrÚset_rawåszMessage.set_rawcCs t|j ¡ƒSrD)Úiterr;ÚcopyrFrrrÚ raw_itemsìszMessage.raw_itemscCsJ g}| ¡}|jD]\}}| ¡|kr| |j ||¡¡q |s#|S|SrD)r.r;r0r:r–)rArršr—rˆr‰rrrÚget_all÷s €zMessage.get_allcKsr g}| ¡D]\}}|dur| | dd¡¡q| t| dd¡|ƒ¡q|dur0| d|¡t |¡||<dS)NÚ_ú-r)r™r0r`r'ÚinsertÚ SEMISPACErl)rAÚ_nameÚ_valueZ_paramsÚpartsrˆr‰rrrr{ s zMessage.add_headercCs\ | ¡}ttt|jƒƒ|jƒD]\}\}}| ¡|kr)|j ||¡|j|<dSqt|ƒ‚rD)r.ÚzipÚrangerr;r:r…ÚKeyError)rAr¤r¥r4rˆr‰rrrÚreplace_header's" þzMessage.replace_headercCsJ tƒ}| d|¡}||ur| ¡St|ƒd ¡}| d¡dkr#dS|S)Nú content-typerú/rr9)ÚobjectrfÚget_default_typerr.r,)rAÚmissingr&ÚctyperrrÚget_content_type:s zMessage.get_content_typecCó | ¡}| d¡dS)Nr¬r©r±Úsplit©rAr°rrrÚget_content_maintypeRózMessage.get_content_maintypecCr²)Nr¬rr³rµrrrÚget_content_subtype[r·zMessage.get_content_subtypecCr}rD©r@rFrrrr®dszMessage.get_default_typecCs ||_dSrDr¹rµrrrÚset_default_typems zMessage.set_default_typec Cstƒ}| ||¡}||ur|Sg}t|ƒD]+}z| dd¡\}}| ¡}| ¡}Wnty8| ¡}d}Ynw| ||f¡qt |¡}|S)Nr)rr) r­rfr6r´rrƒr0rZ decode_params) rAršÚheaderr¯r&ÚparamsÚprr†rrrÚ_get_params_preservevs"    ý zMessage._get_params_preserver«TcCs6 tƒ}| ||¡}||ur|S|rdd„|DƒS|S)NcSsg|] \}}|t|ƒf‘qSr)r8rrrrrsz&Message.get_params..)r­r¾)rAršr»r7r¯r¼rrrÚ get_params‹s zMessage.get_paramscCsP ||vr|S| ||¡D]\}}| ¡| ¡kr%|r!t|ƒS|Sq |SrD)r¾r.r8)rArršr»r7rˆr‰rrrrh¡s üzMessage.get_paramryrc Cs t|tƒs |r |||f}||vr| ¡dkrd}n| |¡}|j||ds;|s/t|||ƒ}n=t |t|||ƒg¡}n1d}|j||dD]'\} } d} |  ¡| ¡krYt|||ƒ} nt| | |ƒ} |sd| }qDt || g¡}qD|| |¡kr†|r}|  ||¡dS||=|||<dSdS)Nr«r9)r»r©r»r7) rr r.rfrhr'r£rlr¿rª) rArr&r»Úrequoter Zlanguager`r°Z old_paramÚ old_valueZ append_paramrrrr|Ãs:  ÿÿ  ûzMessage.set_paramcCs† ||vrdSd}|j||dD] \}}| ¡| ¡kr0|s%t|||ƒ}qt |t|||ƒg¡}q|| |¡krA||=|||<dSdS)NrrÀ)r¿r.r'r£rlrf)rArr»rÁZ new_ctyper½r‰rrrrzös  ÿ€ þzMessage.del_paramcCsˆ | d¡dks t‚| ¡dkr|d=d|d<||vr!|||<dS|j||d}||=|||<|dd…D] \}}| ||||¡q5dS)Nr¬rr«z mime-versionrxrwrÀ)r,rƒr.r¿r|)rArer»rÁr¼r½r‰rrrÚset_type s ÿzMessage.set_typecCsF tƒ}| d|d¡}||ur| d|d¡}||ur|St |¡ ¡S)NÚfilenameúcontent-dispositionrr«)r­rhrÚcollapse_rfc2231_valuer)rAršr¯rÄrrrÚ get_filename,szMessage.get_filenamecCs. tƒ}| d|¡}||ur|St |¡ ¡S)NÚboundary)r­rhrrÆr-)rAršr¯rÈrrrÚ get_boundary<s  zMessage.get_boundarycCs tƒ}| |d¡}||urt d¡‚g}d}|D]\}}| ¡dkr/| dd|f¡d}q| ||f¡q|sB| dd|f¡g}|jD]=\} } |  ¡dkr}g} |D]\} } | dkrc|  | ¡qU|  d| | f¡qUt | ¡} | |j   | | ¡¡qG| | | f¡qG||_dS) Nr«zNo Content-Type header foundFrÈz"%s"Trr) r­r¾rZHeaderParseErrorr.r0r;r£rlr:r…)rArÈr¯r¼Z newparamsZfoundpZpkZpvr‹Úhr‰r¦rˆr†rrrÚ set_boundaryIs4         zMessage.set_boundaryc Csž tƒ}| d|¡}||ur|St|tƒr9|dpd}z|d d¡}t||ƒ}Wnttfy8|d}Ynwz | d¡W| ¡StyN|YSw)Nr rzus-asciirra) r­rhrr r!rrirjr.)rAršr¯r ZpcharsetrSrrrÚget_content_charsetws&    ÿ  ýÿzMessage.get_content_charsetcs ‡fdd„| ¡DƒS)Ncsg|]}| ˆ¡‘qSr)rÌ)rŽÚpart©ršrrr¥sz(Message.get_charsets..©Úwalk)rAršrrÎrÚ get_charsets•szMessage.get_charsetscCs, | d¡}|dur dSt|ƒd ¡}|S)NrÅr)rfrr.)rAr&Úc_drrrÚget_content_disposition§s  zMessage.get_content_dispositionrÏ)FrN)FN)NFrD)Nr«T)ryTNrF)r«T)ryT)3Ú__name__Ú __module__Ú __qualname__r rBrGrErTrSrWrYrZr^rqrvrur~rr‚rŠrŒrr’r“r—r™rfr›ržrŸr{rªr±r¶r¸r®rºr¾r¿rhr|rzrÃrÇrÉrËrÌrÑrÓZemail.iteratorsrÐrrrrrosh     Z/          ÿ" ÿ 3   .  csÞeZdZd/‡fdd„ Zd0‡fdd„ Zdd„Zd d „Zd d „Zd1dd„Zhd£Z dd„Z dd„Z ddœdd„Z ddœdd„Z dd„Zd/dd„Zd/dd„Zd/d d!„Zdd"œd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Z‡ZS)2ÚMIMEPartNcs(|dur ddlm}|}tƒ |¡dS)Nr)Údefault)Z email.policyrØÚsuperrB)rAr:rØ©Ú __class__rrrB¹s zMIMEPart.__init__Fcs2 |dur|jn|}|dur|j}tƒ |||¡SrD)r:Zmax_line_lengthrÙrE)rArMrKr:rÚrrrEÀs  zMIMEPart.as_stringcCs|j|jjdddS)NT)Úutf8©r:)rEr:ZclonerFrrrrGÐszMIMEPart.__str__cCs | d¡}|dur dS|jdkS)NrÅFÚ attachment)rfZcontent_disposition)rArÒrrrÚ is_attachmentÓs zMIMEPart.is_attachmentc cs| ¡rdS| ¡ d¡\}}|dkr"||vr | |¡|fVdS|dks*| ¡s,dS|dkrB| ¡D] }| ||¡EdHq4dSd|vrN| d¡|fVd}| d¡}|rh| ¡D] }|d|krg|}nq[|durx| ¡}|rv|dnd}|dur‡| ||¡EdHdSdS)Nr¬ÚtextÚ multipartÚrelatedr2ú content-idr) rßr±r´ÚindexrWÚ iter_partsÚ _find_bodyrhrq) rArÍÚpreferencelistÚmaintypeÚsubtypeZsubpartÚ candidater2Zsubpartsrrrræ×s<€    þÿzMIMEPart._find_body©râÚhtmlÚplaincCsF t|ƒ}d}| ||¡D]\}}||kr |}|}|dkr |Sq |S)Nr)rræ)rArçZ best_prioÚbodyZpriorÍrrrÚget_bodyôs €zMIMEPart.get_body>)ràrí)ràrì)rárâ)ráÚ alternativec cs  | ¡ d¡\}}|dks|dkrdS| ¡}z| ¡}Wn ty)YdSw|dkrf|dkrf| d¡}|rZd}g}|D]}| d¡|krKd}q?| |¡q?|rZ|EdHdS| d ¡|EdHdSg} |D]#}| ¡ d¡\}}||f|j vrŠ|  ¡sŠ|| vrŠ|  |¡qj|VqjdS) Nr¬rárðrâr2FrãTr) r±r´rqrr[rhrfr0ÚpopÚ _body_typesrß) rArèrér]r¦r2r‡Z attachmentsrÍÚseenrrrÚiter_attachments sJ€   þ     ÿ úzMIMEPart.iter_attachmentsccs" | ¡r| ¡EdHdSdSrD)rWrqrFrrrråCs €ÿzMIMEPart.iter_parts)Úcontent_managercOs(|dur|jj}|j|g|¢Ri|¤ŽSrD)r:rõÚ get_content©rArõÚargsÚkwrrrröKszMIMEPart.get_contentcOs,|dur|jj}|j|g|¢Ri|¤ŽdSrD)r:rõÚ set_contentr÷rrrrúPszMIMEPart.set_contentc CsÚ| ¡dkr| ¡}||f}||vrtd ||¡ƒ‚g}g}|jD]\}}| ¡ d¡r5| ||f¡q"| ||f¡q"|rSt|ƒ|j d} || _|j | _ | g|_ ng|_ ||_d||d<|durk|  d|¡dSdS)NrázCannot convert {} to {}úcontent-rÝz multipart/ryrÈ) r¶r¸rƒr„r;r.Ú startswithr0rer:r=r|) rAréZdisallowed_subtypesrÈZexisting_subtypeZ keep_headersZ part_headersrr&rÍrrrÚ_make_multipartUs0  ÿ  ÿzMIMEPart._make_multipartcCó| dd|¡dS)Nrâ)rðÚmixed©rý©rArÈrrrÚ make_relatedpózMIMEPart.make_relatedcCrþ)Nrð)rÿrrrrrÚmake_alternativesrzMIMEPart.make_alternativecCrþ)NrÿrrrrrrÚ make_mixedvrzMIMEPart.make_mixed)Ú_dispcOsj| ¡dks | ¡|krt|d|ƒƒt|ƒ|jd}|j|i|¤Ž|r.d|vr.||d<| |¡dS)NráZmake_rÝrÅzContent-Disposition)r¶r¸Úgetattrrer:rúr^)rAZ_subtyperrørùrÍrrrÚ_add_multipartys   zMIMEPart._add_multipartcOó |jdg|¢Rddi|¤ŽdS)NrârZinline©r©rArørùrrrÚ add_relatedƒó zMIMEPart.add_relatedcOs|jdg|¢Ri|¤ŽdS)Nrðr r rrrÚadd_alternative†szMIMEPart.add_alternativecOr )NrÿrrÞr r rrrÚadd_attachment‰r zMIMEPart.add_attachmentcCsg|_d|_dSrD©r;r=rFrrrÚclearŒs zMIMEPart.clearcCsdd„|jDƒ|_d|_dS)NcSs&g|]\}}| ¡ d¡s||f‘qS)rû)r.rü)rŽÚnr‰rrrr‘s ÿz*MIMEPart.clear_content..rrFrrrÚ clear_contents zMIMEPart.clear_contentrD)FNN)rë)rÔrÕrÖrBrErGrßrærïròrôrårörúrýrrrrr rrrrÚ __classcell__rrrÚrr×·s, 7    r×cseZdZ‡fdd„Z‡ZS)rcs*tƒj|i|¤Žd|vrd|d<dSdS)Nrwrx)rÙrúr rÚrrrú˜s ÿzEmailMessage.set_content)rÔrÕrÖrúrrrrÚrr–s)NT)Ú__all__ÚrernrkÚiorrZemailrrZemail._policybaserr r r>Zemail._encoded_wordsr rsr£Úcompiler#rr'r6r8rr×rrrrrÚs8      " N`