o ?OgԷ@s ddgZddlZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z ddlm Zdd lmZejZd Zed Zd d ZdddZddZddZGdddZGdddeZGdddeZdS)Message EmailMessageN)BytesIOStringIO)utils)errors)Policycompat32charset)decode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]cCs4t|d\}}}|s|dfS||fS)N;)str partitionstrip)paramasepbr4/opt/alt/python310/lib64/python3.10/email/message.py _splitparams rTcCs |dur_t|dkr_t|tr'|d7}t|d|d|d}d||fSz|dWntyH|d7}t|dd}d||fYSw|sPt|rYd |t |fSd||fS|S) Nr*%s=%sasciizutf-8z%s="%s") len isinstancetuplerZencode_rfc2231encodeUnicodeEncodeError tspecialssearchquote)rvaluer%rrr _formatparam's"    r'cCsdt|}g}|dddkr|dd}|d}|dkrK|dd||dd|drK|d|d}|dkrK|dd||dd|ds/|dkrSt|}|d|}d|vrx|d}|d|d||dd}||||d}|dddks|S)Nr rr"z\"r=)rfindcountrindexrlowerappend)sZplistendfirrr _parseparamIs$   ((  ,  r3cCs0t|tr|d|dt|dfSt|S)Nrrr)rr runquote)r&rrr _unquotevalue]s  r5c@seZdZ efddZddZdcdd Zd d Zddd d ZddZ ddZ ddZ ddZ deddZ dfddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zdfd0d1Zd2d3Zd4d5Zdfd6d7Zd8d9Zd:d;Zdd?Z!d@dAZ"dBdCZ#dDdEZ$dFdGZ%dgdJdKZ& H IdgdLdMZ' I dhdPdQZ(didRdSZ)djdTdUZ*dfdVdWZ+dfdXdYZ,dZd[Z-dfd\d]Z.dfd^d_Z/d`daZ0ddbl1m2Z2dS)krcCs:||_g|_d|_d|_d|_d|_|_g|_d|_dS)N text/plain) policy_headers _unixfrom_payload_charsetZpreambleZepiloguedefects _default_type)selfr7rrr__init__xs  zMessage.__init__cC |SN) as_stringr>rrr__str__zMessage.__str__FrNcCsL ddlm}|dur|jn|}t}||d||d}|j||d|S)Nr) GeneratorF) mangle_from_ maxheaderlenr7unixfrom)email.generatorrFr7rflattengetvalue)r>rJrHr7rFfpgrrrrBs zMessage.as_stringcCr@rA)as_bytesrCrrr __bytes__rEzMessage.__bytes__cCsJ ddlm}|dur|jn|}t}||d|d}|j||d|S)Nr)BytesGeneratorF)rGr7rI)rKrRr7rrLrM)r>rJr7rRrNrOrrrrPs zMessage.as_bytescCs t|jtSrA)rr:listrCrrr is_multiparts zMessage.is_multipartcCs ||_dSrAr9)r>rJrrr set_unixfroms zMessage.set_unixfromcCs|jSrArUrCrrr get_unixfromszMessage.get_unixfromcCsB |jdur |g|_dSz |j|WdSty tdw)Nz=Attach is not valid on a message with a non-multipart payload)r:r.AttributeError TypeError)r>payloadrrrattachs   zMessage.attachc Cs |r|r dS|dur|jS|j|S|dur(t|jts(tdt|j|j}t|dd}t|tr|t |rd| dd}|scz | | ddd}Wn(tyb| dd}Ynwn|r|z| d}Wnty{| d}Ynw|s|S|d krt|S|d krtd |\}}|D] }|j||q|S|d vrt|} t} z tj | | d d| WStjy|YSwt|tr|S|S)NzExpected list, got %szcontent-transfer-encodingrrsurrogateescaper replaceraw-unicode-escapezquoted-printablebase64)z x-uuencodeZuuencodeZuuezx-uueT)quiet)rTr:rrSrYtypergetr-rZ_has_surrogatesr!decode get_param LookupError UnicodeErrorquopriZ decodestringr join splitlinesr7Z handle_defectruurMError) r>r2rdrZcteZbpayloadr&r<ZdefectZin_fileZout_filerrr get_payloads`!         zMessage.get_payloadcCsv t|dr|dur||_dSt|tst|}||j}t|dr+|dd|_n||_|dur9||dSdS)Nr!rdrr\)hasattrr:rCharsetr!output_charsetrd set_charset)r>rZr rrr set_payload/s    zMessage.set_payloadc Cs |dur|dd|_dSt|tst|}||_d|vr%|ddd|vr4|jdd|dn|d|||krI||j|_d|vr| }z||WdSt y|j}|r|z| dd }Wnt y{| |j }Ynw|||_|d|YdSwdS) Nr MIME-Version1.0 Content-Typer6r zContent-Transfer-Encodingrr\) del_paramr;rrp add_headerZget_output_charset set_paramZ body_encoder:Zget_body_encodingrYr!rgrq)r>r rmrZrrrrrCsB       zMessage.set_charsetcC |jSrA)r;rCrrr get_charsetrszMessage.get_charsetcCs t|jSrA)rr8rCrrr__len__zs zMessage.__len__cCs ||SrA)rcr>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)r7Zheader_max_countr-r8 ValueErrorformatr.header_store_parse)r>r~valZ max_countZlnamefoundkvrrr __setitem__s  zMessage.__setitem__cCsB |}g}|jD]\}}||kr|||fq ||_dSrA)r-r8r.)r>r~ newheadersrrrrr __delitem__s  zMessage.__delitem__cCs|dd|jDvS)NcSsg|]\}}|qSr)r-.0rrrrr sz(Message.__contains__..)r-r8r}rrr __contains__szMessage.__contains__ccs|jD]\}}|VqdSrAr8)r>Zfieldr&rrr__iter__szMessage.__iter__cCs dd|jDS)NcSsg|]\}}|qSrrrrrrrsz Message.keys..rrCrrrkeyssz Message.keysc fddjDS)Ncsg|] \}}j||qSrr7header_fetch_parserrCrrrsz"Message.values..rrCrrCrvalues zMessage.valuescr)Ncs"g|] \}}|j||fqSrrrrCrrrsz!Message.items..rrCrrCritemsrz Message.itemscCs< |}|jD]\}}||kr|j||Sq|SrA)r-r8r7r)r>r~failobjrrrrrrcs z Message.getcCs |j||fdSrA)r8r.)r>r~r&rrrset_rawszMessage.set_rawcCs t|jSrA)iterr8copyrCrrr raw_itemsszMessage.raw_itemscCsJ g}|}|jD]\}}||kr||j||q |s#|S|SrA)r-r8r.r7r)r>r~rrrrrrrget_alls zMessage.get_allcKsr g}|D]\}}|dur||ddq|t|dd|q|dur0|d|t|||<dS)N_-r)rr.r]r'insert SEMISPACEri)r>_name_valueZ_paramspartsrrrrrrxs zMessage.add_headercCs\ |}ttt|j|jD]\}\}}||kr)|j|||j|<dSqt|rA)r-ziprangerr8r7rKeyError)r>rrr2rrrrrreplace_header!s" zMessage.replace_headercCsJ t}|d|}||ur|St|d}|ddkr#dS|S)N content-typer/rr6)objectrcget_default_typerr-r+)r>missingr&ctyperrrget_content_type4s zMessage.get_content_typecC |}|ddS)Nrrrsplitr>rrrrget_content_maintypeLzMessage.get_content_maintypecCr)Nrrrrrrrget_content_subtypeUrzMessage.get_content_subtypecCrzrAr=rCrrrr^szMessage.get_default_typecCs ||_dSrArrrrrset_default_typegs zMessage.set_default_typec Cst}|||}||ur|Sg}t|D]+}z|dd\}}|}|}Wnty8|}d}Ynw|||fqt|}|S)Nr)rr) rrcr3rrrr.rZ decode_params) r>rheaderrr&paramspr~rrrr_get_params_preserveps"     zMessage._get_params_preserverTcCs6 t}|||}||ur|S|rdd|DS|S)NcSsg|] \}}|t|fqSr)r5rrrrrsz&Message.get_params..)rr)r>rrr4rrrrr get_paramss zMessage.get_paramscCsP ||vr|S|||D]\}}||kr%|r!t|S|Sq |SrA)rr-r5)r>rrrr4rrrrrres zMessage.get_paramrvrc Cs t|ts |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)Nrr6)rrrr4) rr r-rcrer'rrirr) r>rr&rrequoter Zlanguager]rZ old_param old_valueZ append_paramrrrrys:    zMessage.set_paramcCs ||vrdSd}|j||dD] \}}||kr0|s%t|||}qt|t|||g}q|||krA||=|||<dSdS)Nrr)rr-r'rrirc)r>rrrZ new_ctyperrrrrrws   zMessage.del_paramcCs |ddks t|dkr|d=d|d<||vr!|||<dS|j||d}||=|||<|ddD] \}}|||||q5dS)Nrrrz mime-versionrurtr)r+rr-rry)r>rbrrrrrrrrset_types zMessage.set_typecCsF t}|d|d}||ur|d|d}||ur|St|S)Nfilenamecontent-dispositionr~r)rrercollapse_rfc2231_valuer)r>rrrrrr get_filename&szMessage.get_filenamecCs. t}|d|}||ur|St|S)Nboundary)rrerrrstrip)r>rrrrrr get_boundary6s  zMessage.get_boundarycCs t}||d}||urtdg}d}|D]\}}|dkr/|dd|fd}q|||fq|sB|dd|fg}|jD]=\} } | dkr}g} |D]\} } | dkrc| | qU| d| | fqUt| } ||j | | qG|| | fqG||_dS) NrzNo Content-Type header foundFrz"%s"Trr) rrrZHeaderParseErrorr-r.r8rrir7r)r>rrrZ newparamsZfoundpZpkZpvrhrrrrrrr set_boundaryCs4         zMessage.set_boundaryc Cs t}|d|}||ur|St|tr9|dpd}z|dd}t||}Wnttfy8|d}Ynwz |dW|StyN|YSw)Nr rzus-asciirr^) rrerr r!rrfrgr-)r>rrr ZpcharsetrPrrrget_content_charsetqs&      zMessage.get_content_charsetcs fdd|DS)Ncsg|]}|qSr)r)rpartrrrrsz(Message.get_charsets..walk)r>rrrr get_charsetsszMessage.get_charsetscCs, |d}|dur dSt|d}|S)Nrr)rcrr-)r>r&c_drrrget_content_dispositions  zMessage.get_content_dispositionr)FrN)FN)NFrA)NrT)rvTNrF)rT)rvT)3__name__ __module__ __qualname__r r?rDrBrQrPrTrVrWr[rnrsrrr{r|rrrrrrrrrcrrrrxrrrrrrrrreryrwrrrrrrrZemail.iteratorsrrrrrrish     Z/          " 3   .  cseZdZd/fdd Zd0fdd ZddZd d Zd d Zd1ddZhdZ ddZ ddZ ddddZ ddddZ ddZd/ddZd/ddZd/d d!Zdd"d#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.ZZS)2MIMEPartNcs(|dur ddlm}|}t|dS)Nr)default)Z email.policyrsuperr?)r>r7r __class__rrr?s zMIMEPart.__init__Fcs2 |dur|jn|}|dur|j}t|||SrA)r7Zmax_line_lengthrrB)r>rJrHr7rrrrBs  zMIMEPart.as_stringcCs|j|jjdddS)NT)utf8r7)rBr7ZclonerCrrrrDszMIMEPart.__str__cCs |d}|dur dS|jdkS)NrF attachment)rcZcontent_disposition)r>rrrr is_attachments 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)Nrtext multipartrelatedstart content-idr) rrrr,rT iter_parts _find_bodyrern) r>rpreferencelistmaintypesubtypeZsubpart candidaterZsubpartsrrrrs<    zMIMEPart._find_bodyrhtmlplaincCsF t|}d}|||D]\}}||kr |}|}|dkr |Sq |S)Nr)rr)r>rZ best_priobodyZpriorrrrget_bodys zMIMEPart.get_body>)r alternative)rr)rr)rrc 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) NrrrrrFrTr) rrrnrrXrercr.pop _body_typesr) r>rrrZrrrZ attachmentsrseenrrriter_attachmentssJ         zMIMEPart.iter_attachmentsccs" |r|EdHdSdSrA)rTrnrCrrrr=s zMIMEPart.iter_parts)content_managercOs(|dur|jj}|j|g|Ri|SrA)r7r get_contentr>rargskwrrrrEszMIMEPart.get_contentcOs,|dur|jj}|j|g|Ri|dSrA)r7r set_contentrrrrrJszMIMEPart.set_contentc Cs|dkr|}||f}||vrtd||g}g}|jD]\}}|dr5|||fq"|||fq"|rSt||j d} || _|j | _ | g|_ ng|_ ||_d||d<|durk| d|dSdS)NrzCannot convert {} to {}content-rz multipart/rvr) rrrrr8r- startswithr.rbr7r:ry) r>rZdisallowed_subtypesrZexisting_subtypeZ keep_headersZ part_headersr~r&rrrr_make_multipartOs0    zMIMEPart._make_multipartcC|dd|dS)Nr)rmixedrr>rrrr make_relatedjzMIMEPart.make_relatedcCr)Nr)rrrrrrmake_alternativemrzMIMEPart.make_alternativecCr)Nrrrrrrr make_mixedprzMIMEPart.make_mixed)_dispcOsj|dks ||krt|d|t||jd}|j|i||r.d|vr.||d<||dS)NrZmake_rrzContent-Disposition)rrgetattrrbr7rr[)r>Z_subtyperrrrrrr_add_multipartss   zMIMEPart._add_multipartcO |jdg|Rddi|dS)NrrZinlinerr>rrrrr add_related} zMIMEPart.add_relatedcOs|jdg|Ri|dS)Nrrr rrradd_alternativeszMIMEPart.add_alternativecOr)Nrrrrr rrradd_attachmentr zMIMEPart.add_attachmentcCsg|_d|_dSrAr8r:rCrrrclears zMIMEPart.clearcCsdd|jD|_d|_dS)NcSs&g|]\}}|ds||fqS)r)r-r)rnrrrrrs z*MIMEPart.clear_content..rrCrrr clear_contents zMIMEPart.clear_contentrA)FNN)r)rrrr?rBrDrrrrrrrrrrrrrr r r rr __classcell__rrrrrs, 7    rcseZdZfddZZS)rcs*tj|i|d|vrd|d<dSdS)Nrtru)rrr rrrrs zEmailMessage.set_content)rrrrrrrrrrs)NT)__all__rerkrhiorrZemailrrZemail._policybaserr r r;Zemail._encoded_wordsr rprcompiler#rr'r3r5rrrrrrrs8      " N`