\ ddgZddlZddlZddlZddlmZmZddlmZddlm Z ddl m Z m Z ddlm Zdd lmZejZd Zejd Zd ZddZdZdZdZGddZGddeZGddeZdS)Message EmailMessageN)BytesIOStringIO)utils)errors)Policycompat32charset)decode_bz; z[ \(\)<>@,;:\\"/\[\]\?=]ct|d\}}}|s|dfS||fS)N;)str partitionstrip)paramasepbs 4/opt/alt/python311/lib64/python3.11/email/message.py _splitparamrsX E $$S))IAsA wwyy$ 7799aggii Tc |t|dkrt|tr4|dz }tj|d|d|d}|d|S |dn2#t $r%|dz }tj|dd}|d|cYSwxYw|st|r|d tj |d S|d|S|S) Nr*=asciizutf-8z="") len isinstancetuplerencode_rfc2231encodeUnicodeEncodeError tspecialssearchquote)rvaluer*s r _formatparamr,'s( SZZ!^^ eU # # 0 SLE(q58U1XFFE#eeUU+ + 0 W%%%%% 0 0 0 ,UGR@@"'%%//// 0  ,I$$U++ , %u{5'9'9'9'9: :#eeUU+ + s!A77,B&%B&cdt|z}g}d}|d||krT|dz }|d|}|d}}|dkr]||d|||d||z z }|dzdkrn!||d|dz}}|dk]|dkrt|}|d||}|dkr |||}nQ|||dz||dz|z}|||}|d||kT|S) Nrrrr!z\"rr) rfindcountr"rstriplowerlstripappendr)spliststartendinddiffifs r _parseparamr=Is c!ff A E E &&e   % %  ffS%  1TAgg AGGCc**QWWUC-E-EE EDax1}}AFF3a00C Agg 77a&&C FF3s # # 77%) AA%' !!##))++c1Aac#gJ4E4E4G4GGA QWWYY# &&e   % %$ Lrct|tr)|d|dtj|dfStj|S)Nrrr)r#r$runquote)r+s r _unquotevaluer@csI %$Qxq5=q#:#:::}U###rc g}t|}|D]g}|drP|dd\}}} t |dn #t $rYcwxYwht d|D]}|st d|ddkrnt tj |}nH#tj $r6|d d z d zd zd zdz}tj |d|}YnwxYw| |d |S)Nsbegin  )basez`begin` line not foundzTruncated inputs sendr ?r) iter splitlines startswith removeprefixrint ValueErrorrbinasciia2b_uuErrorr4join) encoded decoded_linesencoded_lines_iterlinemode_path decoded_linenbytess r _decode_uur]ns Mg002233" 3 3 ??9 % %  --i88BB4HHMD!T Dq!!!!      1222" + + .// / ZZ % % / / E :#?400LL~ : : :Q b(A-1a7F#?4=99LLL : \**** 88M " ""s%+A>> B  B C$$AD)(D)cTeZdZ efdZdZd6dZdZd7dZd Z d Z d Z d Z d8d Z d9dZdZdZdZdZdZdZdZdZdZdZdZd9dZdZdZd9dZdZdZd Z d!Z!d"Z"d#Z#d$Z$d%Z%d:d(Z& d:d)Z' d;d,Z(drc||_g|_d|_d|_d|_dx|_|_g|_d|_dS)N text/plain) policy_headers _unixfrom_payload_charsetpreambleepiloguedefects _default_type)selfras r__init__zMessage.__init__sH    (,,   )rc, |SN) as_stringrjs r__str__zMessage.__str__s ~~rFrNc ddlm}||jn|}t}||d||}||||S)Nr) GeneratorF) mangle_from_ maxheaderlenraunixfrom)email.generatorrrrarflattengetvalue)rjrvrtrarrfpgs rrnzMessage.as_stringsz  .----- &F ZZ Ib#(#/# % % % $ ***{{}}rc, |Srm)as_bytesros r __bytes__zMessage.__bytes__s }}rc ddlm}||jn|}t}||d|}||||S)Nr)BytesGeneratorF)rsraru)rwrrarrxry)rjrvrarrzr{s rr}zMessage.as_bytessm  322222 &F YY N2E& A A A $ ***{{}}rc8 t|jtSrm)r#rdlistros r is_multipartzMessage.is_multipartsD$-...rc||_dSrmrc)rjrvs r set_unixfromzMessage.set_unixfroms !rc|jSrmrros r get_unixfromzMessage.get_unixfroms ~rc |j |g|_dS |j|dS#t$rtdwxYw)Nz=Attach is not valid on a message with a non-multipart payload)rdr4AttributeError TypeError)rjpayloads rattachzMessage.attachsq = $IDMMM : $$W-----! : : :!9::: :s 0A c |r|rdS||jS|j|S|>t|jts$t dt |jz|j}t |dd}|st|t rtj |rz | dd} | | ddd}n&#t$r| dd}YnwxYwn#t$rYnwxYw|St|t r= | dd}n%#t$r| d}YnwxYw|d krt!j|S|d krYt%d |\}}|D]}|j|||S|d vr" t/|S#t0$r|cYSwxYwt|t r|S|S) NzExpected list, got %szcontent-transfer-encodingr rsurrogateescaper replaceraw-unicode-escapezquoted-printablebase64r)z x-uuencodeuuencodeuuezx-uue)rrdr#rrtypergetr2r_has_surrogatesr&decode get_param LookupErrorr'quopri decodestringr rSrKra handle_defectr]rO) rjr;rrctebpayloadr+rhdefects r get_payloadzMessage.get_payloads B      ( ty}$}Q'' =DM4!@!@=3d4=6I6IIJJ J-$((6;;<<BBDD '3'' E,A',J,J &~~g7HIIHF"*//$..G2T2TV_"`"`&FFF"*//'9"E"EF)DN gs # # @ @">>'3DEE% @ @ @ #>>*>??  @ $ $ $&x00 0 H__&chhx/B/B/D/D&E&EFFNE7! 8 8 ))$7777L > > > !(+++     gs # # OsZE/*DE D=:E<D==E E E)FF"!F"#H22 IIcT t|drJ| ||_dSt|tst|}||jd}t|dr|dd|_n||_|||dSdS)Nr&rrr)hasattrrdr#Charsetr&output_charsetr set_charset)rjrr s r set_payloadzMessage.set_payloadQs 7H % % P ' gw// +!'**nnW%;=NOOG 7H % % $#NN74EFFDMM#DM     W % % % % %  rcR ||dd|_dSt|tst|}||_d|vr|ddd|vr+|dd|n(|d|||kr||j|_d|vr| } ||dS#t$r|j}|rB | dd }n*#t$r| |j }YnwxYw|||_|d|YdSwxYwdS) Nr MIME-Version1.0 Content-Typer`r zContent-Transfer-Encodingrr) del_paramrer#r add_headerget_output_charset set_param body_encoderdget_body_encodingrr& UnicodeErrorr)rjr rrs rrzMessage.set_charsetes  ? NN9 % % % DM F'7++ 'g&&G  % % OONE 2 2 2  % % OONL$+$>$>$@$@  B B B B NN9g&@&@&B&B C C C g0022 2 2#// >>DM &d 2 2++--C BD  B B B-II")..:K"L"L'III")..1G"H"HI ' 3 3G < <  ;SAAAAAA B 3 2s6 DF$/EF$$E-*F$,E--3F$#F$c |jSrm)reros r get_charsetzMessage.get_charsets }rc, t|jSrm)r"rbros r__len__zMessage.__len__sG4=!!!rc. ||Srm)rrjnames r __getitem__zMessage.__getitem__s xx~~rcx |j|}|ri|}d}|jD]K\}}||kr.|dz }||kr#t d||L|j|j||dS)Nrrz/There may be at most {} {} headers in a message)raheader_max_countr2rbrOformatr4header_store_parse)rjrval max_countlnamefoundkvs r __setitem__zMessage.__setitem__s K0066  QJJLLEE  Q Q17799%%QJE ))(*88>y$8O8OQQQ T[;;D#FFGGGGGrc |}g}|jD]4\}}||kr|||f5||_dSrm)r2rbr4)rjr newheadersrrs r __delitem__zMessage.__delitem__sg zz|| M * *DAqwwyyD  !!1a&)))" rcL|d|jDvS)Nc<g|]\}}|S)r2.0rrs r z(Message.__contains__..s$DDDda DDDr)r2rbrs r __contains__zMessage.__contains__s&zz||DDdmDDDDDrc#,K|jD] \}}|V dSrmrb)rjfieldr+s r__iter__zMessage.__iter__s0 M  LE5KKKK  rc& d|jDS)Ncg|]\}}|Srrrs rrz Message.keys..s,,,da,,,rrros rkeysz Message.keyss -,dm,,,,rc, fdjDS)NcLg|] \}}j||!Srraheader_fetch_parserrrrjs rrz"Message.values..s?+++Aq ..q!44+++rrros`rvalueszMessage.values5 ++++ M+++ +rc, fdjDS)NcPg|]"\}}|j||f#Srrrs rrz!Message.items..sD+++AqDK221a889+++rrros`ritemsz Message.itemsrrc |}|jD]:\}}||kr|j||cS;|Srm)r2rbrar)rjrfailobjrrs rrz Message.getsf zz||M < .s)===daQ a(()===r)rr)rjrr r?rrs r get_paramszMessage.get_paramssX ((**7F;; W  N  ==f=== =Mrc ||vr|S|||D]F\}}||kr|rt|cS|cSG|Srm)rr2r@)rjrrr r?rrs rrzMessage.get_params ,   N--gv>>  DAqwwyyEKKMM))(+++++HHH * rrr c t|ts|r|||f}||vr|dkrd}n||}|||s@|st |||}nt |t |||g}nd}|||D]u\} } d} | |krt |||} nt | | |} |s| }Yt || g}v|||kr$|r| ||dS||=|||<dSdS)Nrr`)r r r r?) r#r$r2rrr,rrSrr) rjrr+r requoter languagerr old_param old_value append_params rrzMessage.set_params %'' /G /h.E   &,,..N"B"B EEHHV$$E~~eF~33 B B$UE7;;!Lw??@BBE(,v@G)8)I)I B B$ 9! ??$$ 55#/ug#F#FLL#/ 9g#N#NLB(EE%NNE<+@AAEE DHHV$$ $ $ %##FE22222L$V % $rc j ||vrdSd}|||D]n\}}||kr?|st|||}Ct|t|||g}o|||kr ||=|||<dSdS)Nr r)rr2r,rrSr)rjrr r new_ctyperrs rrzMessage.del_params     F OO67OCC N NDAqwwyyEKKMM)) N ,Q7 ; ;II ) 0>^ + +^$#(D   DL F@@ LV 122J 2 2DAq NN1a 1 1 1 1 2 2rc t}|d|d}||ur|d|d}||ur|Stj|S)Nfilenamecontent-dispositionrr)rrrcollapse_rfc2231_valuer)rjrrr!s r get_filenamezMessage.get_filenameHsu ((>>*g7LMM w  ~~fg~FFH w  N+H55;;===rc t}|d|}||ur|Stj|S)Nboundary)rrrr#r1)rjrrr&s r get_boundaryzMessage.get_boundaryXsR ((>>*g66 w  N+H55<<>>>rc t}||d}||urtjdg}d}|D]Q\}}|dkr|dd|zfd}:|||fR|s|dd|zfg}|jD]\} } | dkrg} |D];\} } | dkr| | !| | d|    j&8*;< = = = M * *DAqwwyyN**%77DAqBww Q 11%56666nnU++!!$+"@"@C"H"HIIII!!1a&))))" rc t}|d|}||ur|St|trV|dpd} |dd}t ||}n#t tf$r |d}YnwxYw |dn#t$r|cYSwxYw|S)Nr rzus-asciirr) rrr#r$r&rrrr2)rjrrr pcharsetr}s rget_content_charsetzMessage.get_content_charsets ((..G44 g  N gu % % %qz/ZH %#1:,,-ABBh11. % % %!!* %  NN: & & & &   NNN }}s$ +A88BBB.. B=<B=cF fd|DS)Nc:g|]}|Sr)r2)rpartrs rrz(Message.get_charsets..s'JJJd((11JJJrwalk)rjrs `r get_charsetszMessage.get_charsetss- KJJJdiikkJJJJrc |d}|dSt|d}|S)Nr"r)rrr2)rjr+c_ds rget_content_dispositionzMessage.get_content_dispositionsH .// =4%  #))++ rr6)FrN)FN)NFrm)NrT)rTNr F)rT)rT)3__name__ __module__ __qualname__r rkrprnr~r}rrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrr$r'r/r2r8r;email.iteratorsr7rrrrrsK ' * * * *   0    ///""" ::: VVVVp&&&&(-B-B-B^"""   HHH$ # # #EEE--- + + + + + +    ",,,***$,,,< " " "&0######"""###*,5C    DFJ5:1%1%1%1%f%%%%,2222@>>>> ? ? ? ?,#,#,#\<KKKK$   %$$$$$$$rceZdZdfd Zdfd ZdZdZdZdd Zhd Z d Z d Z dd dZ dd dZ dZddZddZddZdddZdZdZdZdZdZxZS)MIMEPartNc^|ddlm}|}t|dS)Nr)default) email.policyrCsuperrk)rjrarC __class__s rrkzMIMEPart.__init__s= > , , , , , ,F      rFct ||jn|}||j}t|||Srm)ramax_line_lengthrErn)rjrvrtrarFs rrnzMIMEPart.as_stringsC !'F  !1Lww  <@@@rc`||jdS)NT)utf8ra)rnracloneros rrpzMIMEPart.__str__s)~~T[%6%6D%6%A%A~BBBrcJ|d}|dn |jdkS)Nr"F attachment)rcontent_disposition)rjr:s r is_attachmentzMIMEPart.is_attachments*hh,-- uu)@L)PPrc#K|rdS|d\}}|dkr||vr|||fVdS|dks|sdS|dkr5|D]}|||Ed{VdSd|vr|d|fVd}|d}|r'|D]}|d|kr|}n| |}|r|dnd}||||Ed{VdSdS)Nrtext multipartrelatedr7 content-idr) rPrrindexr iter_parts _find_bodyrr) rjr5preferencelistmaintypesubtypesubpart candidater7subpartss rrXzMIMEPart._find_bodys       F 113399#>>' v  .((%++G44d;;;; F { " "$*;*;*=*= " F i  ??,, D D??7NCCCCCCCCCC F  & &!'' 22D9 9 9 9 w''  ??,,  <(E11 'IE2  ''))H'/9 TI  y.AA A A A A A A A A A ! rrThtmlplainc t|}d}|||D]\}}||kr |}|}|dkrn|S)Nr)r"rX)rjrY best_priobodyprior5s rget_bodyzMIMEPart.get_bodyse '' //$??  JD$i 199E r>rRr`rRrarSrTrS alternativec#K |d\}}|dks|dkrdS|} |}n#t$rYdSwxYw|dkr|dkr||d}|rFd}g}|D]3}|d|krd}||4|r |Ed{VdS|d |Ed{VdSg} |D]i}|d\}}||f|j vr.| s|| vr| |e|VjdS) NrrSrkrTr7FrUTr) rrrrrrrr4pop _body_typesrP) rjrZr[rrr7r attachmentsr5seens riter_attachmentszMIMEPart.iter_attachments(s !113399#>>' { " "g&>&> F""$$ LLNNEE    FF  { " "w)';';NN7++E  !11Dxx --66 $#**40000********F IIaLLL        F  D $ 5 5 7 7 = =c B B Hg7#t'777**,,8181D1D G$$$JJJJ   sA&& A43A4c#lK |r|Ed{VdSdSrm)rrros rrWzMIMEPart.iter_parts_sU       *'')) ) ) ) ) ) ) ) ) ) * *r)content_managerc@| |jj}|j|g|Ri|Srm)rars get_contentrjrsargskws rruzMIMEPart.get_contentgs5  ""k9O**4=$==="===rcD| |jj}|j|g|Ri|dSrm)rars set_contentrvs rrzzMIMEPart.set_contentls;  ""k9O##D64666266666rc^|dkrA|}||fz}||vr#td||g}g}|jD][\}}|dr|||fD|||f\|r:t||j } || _|j | _ | g|_ ng|_ ||_d|z|d<|| d|dSdS)NrSzCannot convert {} to {}content-rKz multipart/rr&) rrrOrrbr2rLr4rrardr) rjr[disallowed_subtypesr&existing_subtype keep_headers part_headersrr+r5s r_make_multipartzMIMEPart._make_multipartqsc  $ $ & &+ 5 5#7799 "5 "B #666 !:!A!A$g"/"/000  = 3 3KD%zz||&&z22 3##T5M2222##T5M2222  4::T[111D(DM MDM!FDMMDM$ +g5^   NN:x 0 0 0 0 0 rc4|dd|dS)NrT)rkmixedrrjr&s r make_relatedzMIMEPart.make_relateds! Y(@(KKKKKrc4|dd|dS)Nrk)rrrs rmake_alternativezMIMEPart.make_alternatives  ]JAAAAArc4|dd|dS)Nrrrrs r make_mixedzMIMEPart.make_mixeds  Wb(33333r)_dispc2|dks||krt|d|zt||j}|j|i||r d|vr||d<||dS)NrSmake_rKr"zContent-Disposition)rrgetattrrrarzr)rj_subtyperrwrxr5s r_add_multipartzMIMEPart._add_multiparts  % % ' '; 6 6((**h66 -GD'H, - - / / /tDzz---$%"%%%  0*$66*/D& ' Drc,|jdg|Rddi|dS)NrTrinlinerrjrwrxs r add_relatedzMIMEPart.add_relateds0ICCCCHCCCCCCrc(|jdg|Ri|dS)Nrkrrs radd_alternativezMIMEPart.add_alternatives+M7D777B77777rc,|jdg|Rddi|dS)NrrrNrrs radd_attachmentzMIMEPart.add_attachments0GEdEEE,E"EEEEErc"g|_d|_dSrmrbrdros rclearzMIMEPart.clears  rc@d|jD|_d|_dS)Ncjg|]0\}}|d,||f1S)r|)r2rL)rnrs rrz*MIMEPart.clear_content..sQBBBDAq ! 4 4Z @ @B!QBBBrrros r clear_contentzMIMEPart.clear_contents3BBDMBBB  rrm)FNN)r_)r<r=r>rkrnrprPrXrfrnrqrWrurzrrrrrrrrrr __classcell__rFs@rrArAs!!!!!!AAAAAA CCCQQQBBB:(111K555n***26>>>>> 2677777 1116LLLLBBBB444459DDD888FFFrrAceZdZfdZxZS)rcPtj|i|d|vrd|d<dSdS)Nrr)rErz)rjrwrxrFs rrzzEmailMessage.set_contentsBT(R(((  % %#(D  & %r)r<r=r>rzrrs@rrrs8)))))))))r)NT)__all__rPreriorremailrremail._policybaser r r reemail._encoded_wordsr rrcompiler(rr,r=r@r]rrArrrrrs ? n % ........%%%%%%))))))     BJ2 3 3        D4$$$###>C %C %C %C %C %C %C %C %L\\\\\w\\\~)))))8)))))r