B ‡ya@ÈNã@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ú0/opt/alt/python37/lib/python3.7/email/message.pyÚ _splitparams rTcCsÄ|dk r¼t|ƒdkr¼t|tƒrL|d7}t |d|d|d¡}d||fSy| d¡Wn2tk rŒ|d7}t |dd¡}d||fSX|sœt |¡r®d |t  |¡fSd||fSn|SdS) NrÚ*ééz%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}xÜ|dd…dkrì|dd…}| d¡}x<|dkrt| dd|¡| dd|¡drt| d|d¡}q:W|dkr†t|ƒ}|d|…}d|krÐ| d¡}|d|… ¡ ¡d||dd… ¡}| | ¡¡||d…}qW|S)Nr rrú"z\"rú=)r ÚfindÚcountrÚindexrÚlowerÚappend)ÚsZplistÚendÚfÚirrrÚ _parseparamIs    *  ,r1cCs4t|tƒr&|d|dt |d¡fSt |¡SdS)Nrrr)rrrÚunquote)r$rrrÚ _unquotevalue]s r3c@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)Nz text/plain) ÚpolicyÚ_headersÚ _unixfromÚ_payloadÚ_charsetZpreambleZepilogueÚdefectsÚ _default_type)Úselfr4rrrÚ__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_Ú maxheaderlenr4)Úunixfrom)Úemail.generatorr?r4rÚflattenÚgetvalue)r;rBrAr4r?ÚfpÚgrrrr=‰s zMessage.as_stringcCs| ¡S)N)Úas_bytes)r;rrrÚ __bytes__¡szMessage.__bytes__cCsHddlm}|dkr|jn|}tƒ}||d|d}|j||d| ¡S)Nr)ÚBytesGeneratorF)r@r4)rB)rCrJr4rrDrE)r;rBr4rJrFrGrrrrH¦s  zMessage.as_bytescCs t|jtƒS)N)rr7Úlist)r;rrrÚ is_multipartµszMessage.is_multipartcCs ||_dS)N)r6)r;rBrrrÚ set_unixfrom¼szMessage.set_unixfromcCs|jS)N)r6)r;rrrÚ get_unixfrom¿szMessage.get_unixfromcCsF|jdkr|g|_n.y|j |¡Wntk r@tdƒ‚YnXdS)Nz=Attach is not valid on a message with a non-multipart payload)r7r,Ú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úy|  |  dd¡d¡}Wqútk rÄ|  dd¡}YqúXn2|rúy|  d¡}Wntk rø|  d¡}YnX|s|S|d krt |¡S|d krZtd  | ¡¡ƒ\}}x|D]}|j ||¡q>W|S|d kr¤t|ƒ} tƒ} ytj | | d d|  ¡Stjk r¢|SXt|tƒr´|S|S)NzExpected list, got %szcontent-transfer-encodingrrÚsurrogateescaper Úreplacezraw-unicode-escapezquoted-printableÚbase64ó)z x-uuencodeZuuencodeZuuezx-uueT)Úquiet)rLr7rrKrPÚtyper Úgetr+rZ_has_surrogatesrÚdecodeÚ get_paramÚ LookupErrorÚ UnicodeErrorÚquopriZ decodestringr ÚjoinÚ splitlinesr4Z handle_defectrÚuurEÚError) r;r0rZrQÚcteZbpayloadr$r9ZdefectZin_fileZout_filerrrÚ get_payloadÕsV"          zMessage.get_payloadcCspt|dƒr:|dkr||_dSt|tƒs.t|ƒ}| |j¡}t|dƒrT| dd¡|_n||_|dk rl| |¡dS)NrrZrrS)Úhasattrr7rÚCharsetrÚoutput_charsetrZÚ set_charset)r;rQr rrrÚ set_payload/s    zMessage.set_payloadc Cs|dkr| d¡d|_dSt|tƒs.t|ƒ}||_d|krH| dd¡d|krf|jdd| ¡dn| d| ¡¡|| ¡kr| |j¡|_d|kr|  ¡}y ||ƒWnjt k r|j}|rüy|  dd ¡}Wn t k rú|  |j ¡}YnX| |¡|_| d|¡YnXdS) Nr z MIME-Versionz1.0z Content-Typez text/plain)r zContent-Transfer-EncodingrrS)Ú del_paramr8rrfÚ add_headerZget_output_charsetÚ set_paramZ body_encoder7Zget_body_encodingrPrr]rg)r;r rcrQrrrrhCs8       zMessage.set_charsetcCs|jS)N)r8)r;rrrÚ get_charsetrszMessage.get_charsetcCs t|jƒS)N)rr5)r;rrrÚ__len__zszMessage.__len__cCs | |¡S)N)rY)r;ÚnamerrrÚ __getitem__~s zMessage.__getitem__cCsv|j |¡}|r\| ¡}d}x>|jD]4\}}| ¡|kr$|d7}||kr$td ||¡ƒ‚q$W|j |j ||¡¡dS)Nrrz/There may be at most {} {} headers in a message)r4Zheader_max_countr+r5Ú ValueErrorÚformatr,Úheader_store_parse)r;roÚvalZ max_countZlnameÚfoundÚkÚvrrrÚ __setitem__‰s  zMessage.__setitem__cCsD| ¡}g}x,|jD]"\}}| ¡|kr| ||f¡qW||_dS)N)r+r5r,)r;roÚ newheadersrvrwrrrÚ __delitem__›s  zMessage.__delitem__cCs| ¡dd„|jDƒkS)NcSsg|]\}}| ¡‘qSr)r+)Ú.0rvrwrrrú ¨sz(Message.__contains__..)r+r5)r;rorrrÚ __contains__§szMessage.__contains__ccsx|jD]\}}|VqWdS)N)r5)r;Zfieldr$rrrÚ__iter__ªszMessage.__iter__cCsdd„|jDƒS)NcSsg|] \}}|‘qSrr)r{rvrwrrrr|¶sz Message.keys..)r5)r;rrrÚkeys®sz Message.keyscs‡fdd„ˆjDƒS)Ncsg|]\}}ˆj ||¡‘qSr)r4Úheader_fetch_parse)r{rvrw)r;rrr|Àsz"Message.values..)r5)r;r)r;rÚvalues¸s zMessage.valuescs‡fdd„ˆjDƒS)Ncs"g|]\}}|ˆj ||¡f‘qSr)r4r€)r{rvrw)r;rrr|Ësz!Message.items..)r5)r;r)r;rÚitemsÃs z Message.itemscCs:| ¡}x,|jD]"\}}| ¡|kr|j ||¡SqW|S)N)r+r5r4r€)r;roÚfailobjrvrwrrrrYÎs  z Message.getcCs|j ||f¡dS)N)r5r,)r;ror$rrrÚset_rawßszMessage.set_rawcCst|j ¡ƒS)N)Úiterr5Úcopy)r;rrrÚ raw_itemsæszMessage.raw_itemscCsLg}| ¡}x2|jD](\}}| ¡|kr| |j ||¡¡qW|sH|S|S)N)r+r5r,r4r€)r;rorƒrrvrwrrrÚget_allñs  zMessage.get_allcKstg}xH| ¡D]<\}}|dkr2| | dd¡¡q| t| dd¡|ƒ¡qW|dk rb| d|¡t |¡||<dS)NÚ_ú-r)r‚r,rTr%ÚinsertÚ SEMISPACEr_)r;Ú_nameÚ_valueZ_paramsÚpartsrvrwrrrrks zMessage.add_headercCs^| ¡}xPttt|jƒƒ|jƒD].\}\}}| ¡|kr |j ||¡|j|<Pq Wt|ƒ‚dS)N)r+ÚzipÚrangerr5r4rsÚKeyError)r;rrŽr0rvrwrrrÚreplace_header!s $ zMessage.replace_headercCsHtƒ}| d|¡}||kr"| ¡St|ƒd ¡}| d¡dkrDdS|S)Nz content-typerú/rz text/plain)ÚobjectrYÚ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”r)r™rš)r;r˜rrrÚget_content_subtypeUszMessage.get_content_subtypecCs|jS)N)r:)r;rrrr–^szMessage.get_default_typecCs ||_dS)N)r:)r;r˜rrrÚset_default_typegszMessage.set_default_typec Cs–tƒ}| ||¡}||kr|Sg}xdt|ƒD]X}y$| dd¡\}}| ¡}| ¡}Wn tk rt| ¡}d}YnX| ||f¡q,Wt |¡}|S)Nr'rr) r•rYr1ršrrqr,rZ decode_params) r;rƒÚheaderr—r$ÚparamsÚprortrrrÚ_get_params_preserveps     zMessage._get_params_preserveú content-typeTcCs8tƒ}| ||¡}||kr|S|r0dd„|DƒS|SdS)NcSsg|]\}}|t|ƒf‘qSr)r3)r{rvrwrrrr|—sz&Message.get_params..)r•r¡)r;rƒržr2r—rŸrrrÚ get_params…s  zMessage.get_paramscCsJ||kr |Sx8| ||¡D](\}}| ¡| ¡kr|r>t|ƒS|SqW|S)N)r¡r+r3)r;rrƒržr2rvrwrrrr[›szMessage.get_paramú Content-Typerc Cst|tƒs|r|||f}||kr2| ¡dkr2d}n | |¡}|j||dst|s\t|||ƒ}qÚt |t|||ƒg¡}nfd}x`|j||dD]N\} } d} |  ¡| ¡kr²t|||ƒ} n t| | |ƒ} |sÈ| }qˆt || g¡}qˆW|| |¡kr |rü|  ||¡n||=|||<dS)Nz content-typez text/plain)ržr)ržr2) rrr+rYr[r%rŒr_r£r“) r;rr$ržÚrequoter ÚlanguagerTr˜Z old_paramÚ old_valueZ append_paramrrrrl½s2   zMessage.set_paramcCs„||kr dSd}xR|j||dD]@\}}| ¡| ¡kr |sJt|||ƒ}q t |t|||ƒg¡}q W|| |¡kr€||=|||<dS)Nr)ržr2)r£r+r%rŒr_rY)r;rržr¥Z new_ctyper rwrrrrjðszMessage.del_paramcCsŠ| d¡dkst‚| ¡dkr,|d=d|d<||kr@|||<dS|j||d}||=|||<x(|dd…D]\}}| ||||¡qjWdS)Nr”rz content-typez mime-versionz1.0z MIME-Version)ržr2)r)rqr+r£rl)r;rXržr¥rŸr rwrrrÚset_types zMessage.set_typecCsDtƒ}| d|d¡}||kr*| d|d¡}||kr6|St |¡ ¡S)NÚfilenamezcontent-dispositionroz content-type)r•r[rÚcollapse_rfc2231_valuer)r;rƒr—r©rrrÚ get_filename&szMessage.get_filenamecCs,tƒ}| d|¡}||kr|St |¡ ¡S)NÚboundary)r•r[rrªÚrstrip)r;rƒr—r¬rrrÚ get_boundary6s  zMessage.get_boundarycCs tƒ}| |d¡}||kr$t d¡‚g}d}xB|D]:\}}| ¡dkr^| dd|f¡d}q2| ||f¡q2W|s†| dd|f¡g}xŠ|jD]€\} } |  ¡dkrg} x6|D].\} } | dkrÎ|  | ¡q²|  d| | f¡q²Wt | ¡} | |j   | | ¡¡q’| | | f¡q’W||_dS) Nz content-typezNo Content-Type header foundFr¬z"%s"Trz%s=%s) r•r¡rZHeaderParseErrorr+r,r5rŒr_r4rs)r;r¬r—rŸZ newparamsZfoundpZpkZpvryÚhrwrrvrtrrrÚ set_boundaryCs2      zMessage.set_boundaryc Csžtƒ}| d|¡}||kr|St|tƒrr|dp2d}y|d d¡}t||ƒ}Wn ttfk rp|d}YnXy| d¡Wntk r”|SX| ¡S)Nr rzus-asciirzraw-unicode-escape) r•r[rrrr r\r]r+)r;rƒr—r ZpcharsetrHrrrÚget_content_charsetqs    zMessage.get_content_charsetcs‡fdd„| ¡DƒS)Ncsg|]}| ˆ¡‘qSr)r±)r{Úpart)rƒrrr|Ÿsz(Message.get_charsets..)Úwalk)r;rƒr)rƒrÚ get_charsetsszMessage.get_charsetscCs*| d¡}|dkrdSt|ƒd ¡}|S)Nzcontent-dispositionr)rYrr+)r;r$Úc_drrrÚget_content_disposition¡s  zMessage.get_content_disposition)r³)FrN)FN)NF)N)N)N)Nr¢T)Nr¢T)r¤TNrF)r¢T)r¤T)N)N)N)N)3Ú__name__Ú __module__Ú __qualname__r r<r>r=rIrHrLrMrNrRrdrirhrmrnrprxrzr}r~rrr‚rYr„r‡rˆrkr“r™r›rœr–rr¡r£r[rlrjr¨r«r®r°r±r´r¶Zemail.iteratorsr³rrrrris`    Z /            ! 2   .   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;r4r»rrrr<³s zMIMEPart.__init__Fcs0|dkr|jn|}|dkr |j}tƒj||dS)N)rAr4)r4Zmax_line_lengthÚsuperr=)r;rBrAr4)Ú __class__rrr=ºs zMIMEPart.as_stringcCs|j|jjdddS)NT)Úutf8)r4)r=r4Zclone)r;rrrr>ÊszMIMEPart.__str__cCs | d¡}|dkrdS|jdkS)Nzcontent-dispositionFÚ attachment)rYZcontent_disposition)r;rµrrrÚ is_attachmentÍs zMIMEPart.is_attachmentc cs | ¡r dS| ¡ d¡\}}|dkrB||kr>| |¡|fVdS|dkrNdS|dkr~x"| ¡D]}| ||¡EdHq`WdSd|kr–| d¡|fVd}| d¡}|rÌx"| ¡D]}|d|kr²|}Pq²W|dkrì| ¡}|rè|dnd}|dk r| ||¡EdHdS)Nr”ÚtextÚ multipartÚrelatedÚstartz content-idr)rÀr™ršr*Ú iter_partsÚ _find_bodyr[rd) r;r²ÚpreferencelistÚmaintypeÚsubtypeZsubpartÚ candidaterÄZsubpartsrrrrÆÑs6   zMIMEPart._find_body©rÃÚhtmlÚplaincCsDt|ƒ}d}x2| ||¡D]"\}}||kr|}|}|dkrPqW|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| ¡}y | ¡}Wntk rNdSX|dkrÌ|dkrÌ| d¡}|r´d}g}x*|D]"}| d¡|kr”d}q|| |¡q|W|r´|EdHdS| d ¡|EdHdSg} xT|D]L}| ¡ d¡\}}||f|j kr|  ¡s|| kr|  |¡qÖ|VqÖWdS) Nr”rÂrÏrÃrÄFz content-idTr) r™ršrdr†rOr[rYr,ÚpopÚ _body_typesrÀ) r;rÈrÉrQrrÄruZ attachmentsr²ÚseenrrrÚiter_attachmentss>         zMIMEPart.iter_attachmentsccs| ¡dkr| ¡EdHdS)NrÂ)r›rd)r;rrrrÅ=s zMIMEPart.iter_parts)Úcontent_managercOs"|dkr|jj}|j|f|ž|ŽS)N)r4rÔÚ get_content)r;rÔÚargsÚkwrrrrÕEszMIMEPart.get_contentcOs&|dkr|jj}|j|f|ž|ŽdS)N)r4rÔÚ set_content)r;rÔrÖr×rrrrØJszMIMEPart.set_contentc CsÚ| ¡dkr6| ¡}||f}||kr6td ||¡ƒ‚g}g}x>|jD]4\}}| ¡ d¡rl| ||f¡qF| ||f¡qFW|rªt|ƒ|j d} || _|j | _ | g|_ ng|_ ||_d||d<|dk rÖ|  d|¡dS)NrÂzCannot convert {} to {}zcontent-)r4z multipart/z Content-Typer¬) r›rœrqrrr5r+Ú startswithr,rXr4r7rl) r;rÉZdisallowed_subtypesr¬Zexisting_subtypeZ keep_headersZ part_headersror$r²rrrÚ_make_multipartOs,     zMIMEPart._make_multipartcCs| dd|¡dS)NrÃ)rÏÚmixed)rÚ)r;r¬rrrÚ make_relatedjszMIMEPart.make_relatedcCs| dd|¡dS)NrÏ)rÛ)rÚ)r;r¬rrrÚmake_alternativemszMIMEPart.make_alternativecCs| dd|¡dS)NrÛr)rÚ)r;r¬rrrÚ make_mixedpszMIMEPart.make_mixed)Ú_dispcOsf| ¡dks| ¡|kr(t|d|ƒƒt|ƒ|jd}|j||Ž|rXd|krX||d<| |¡dS)NrÂZmake_)r4zcontent-dispositionzContent-Disposition)r›rœÚgetattrrXr4rØrR)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;rÖr×rrrÚadd_alternative€szMIMEPart.add_alternativecOs|jd|žddi|—ŽdS)NrÛrßr¿)rÛ)rá)r;rÖr×rrrÚadd_attachmentƒszMIMEPart.add_attachmentcCsg|_d|_dS)N)r5r7)r;rrrÚclear†szMIMEPart.clearcCsdd„|jDƒ|_d|_dS)NcSs&g|]\}}| ¡ d¡s||f‘qS)zcontent-)r+rÙ)r{Únrwrrrr|‹sz*MIMEPart.clear_content..)r5r7)r;rrrÚ clear_contentŠszMIMEPart.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__rr)r½rrº±s0  7    rºcseZdZ‡fdd„Z‡ZS)rcs"tƒj||Žd|krd|d<dS)Nz MIME-Versionz1.0)r¼rØ)r;rÖr×)r½rrrØ’szEmailMessage.set_content)r·r¸r¹rØrèrr)r½rrs)NT)Ú__all__Úrerar^ÚiorrZemailrrZemail._policybaserr r r8Zemail._encoded_wordsr rfrŒÚcompiler!rr%r1r3rrºrrrrrÚs4      " N`