f 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&c.dt|z}g}|dddkrq|dd}|d}|dkr|dd||dd|z dzrQ|d|dz}|dkr2|dd||dd|z dzQ|dkrt|}|d|}d|vrf|d}|d|dz||dzdz}||||d}|dddkq|S)Nrrrr!z\"rr)rfindcountr"indexrlowerappend)splistendfis r _parseparamr8Is c!ff A E BQB%3,, abbEffSkkAgg17733//!''%C2H2HHAMg&&cAg&&CAgg17733//!''%C2H2HHAMg 77a&&C dsdG !88 A"1" ##%%+a!gmmoo=A QWWYY cddG BQB%3,, Lrct|tr)|d|dtj|dfStj|S)Nrrr)r#r$runquote)r+s r _unquotevaluer;]sI %$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_uuErrorr2join) encoded decoded_linesencoded_lines_iterlinemode_path decoded_linenbytess r _decode_uurXhs 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)selfr\s r__init__zMessage.__init__sH    (,,   )rc, |SN) as_stringres r__str__zMessage.__str__s ~~rFrNc ddlm}||jn|}t}||d||}||||S)Nr) GeneratorF) mangle_from_ maxheaderlenr\unixfrom)email.generatorrmr\rflattengetvalue)rerqror\rmfpgs rrizMessage.as_stringsz  .----- &F ZZ Ib#(#/# % % % $ ***{{}}rc, |Srh)as_bytesrjs r __bytes__zMessage.__bytes__s }}rc ddlm}||jn|}t}||d|}||||S)Nr)BytesGeneratorF)rnr\rp)rrr{r\rrsrt)rerqr\r{rurvs rrxzMessage.as_bytessm  322222 &F YY N2E& A A A $ ***{{}}rc8 t|jtSrh)r#r_listrjs r is_multipartzMessage.is_multipartsD$-...rc||_dSrhr^)rerqs r set_unixfromzMessage.set_unixfroms !rc|jSrhrrjs 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)r_r2AttributeError TypeError)repayloads 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)r~r_r#r}rtypergetr1r_has_surrogatesr&decode get_param LookupErrorr'quopri decodestringr rNrFr\ handle_defectrXrJ) rer7rrctebpayloadr+rcdefects 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)hasattrr_r#Charsetr&output_charsetr set_charset)rerr s r set_payloadzMessage.set_payloadKs 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_paramr`r#r add_headerget_output_charset set_param body_encoder_get_body_encodingrr& UnicodeErrorr)rer rrs rrzMessage.set_charset_s  ? 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 |jSrh)r`rjs r get_charsetzMessage.get_charsets }rc, t|jSrh)r"r]rjs r__len__zMessage.__len__sG4=!!!rc. ||Srh)rrenames 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)r\header_max_countr1r]rJformatr2header_store_parse)rerval max_countlnamefoundkvs r __setitem__zMessage.__setitem__s K0066  QJJLLEE  Q Q17799%%QJE ))(*88>y$8O8OQQQ T[;;D#FFGGGGGrc |}g}|jD]4\}}||kr|||f5||_dSrh)r1r]r2)rer newheadersrrs r __delitem__zMessage.__delitem__sg zz|| M * *DAqwwyyD  !!1a&)))" rcL|d|jDvS)Nc<g|]\}}|S)r1.0rrs r z(Message.__contains__..s$DDDda DDDr)r1r]rs r __contains__zMessage.__contains__s&zz||DDdmDDDDDrc#,K|jD] \}}|V dSrhr])refieldr+s r__iter__zMessage.__iter__s0 M  LE5KKKK  rc& d|jDS)Ncg|]\}}|Srrrs rrz Message.keys..s,,,da,,,rrrjs rkeysz Message.keyss -,dm,,,,rc, fdjDS)NcLg|] \}}j||!Srr\header_fetch_parserrrres rrz"Message.values..s?+++Aq ..q!44+++rrrjs`rvalueszMessage.values5 ++++ M+++ +rc, fdjDS)NcPg|]"\}}|j||f#Srrrs rrz!Message.items..sD+++AqDK221a889+++rrrjs`ritemsz Message.itemsrrc |}|jD]:\}}||kr|j||cS;|Srh)r1r]r\r)rerfailobjrrs rrz Message.getsf zz||M < .s)===daQ a(()===r)rr )rerrr:rr s r get_paramszMessage.get_paramssX ((**7F;; W  N  ==f=== =Mrc ||vr|S|||D]F\}}||kr|rt|cS|cSG|Srh)r r1r;)rerrrr: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[)rr rr:) r#r$r1rrr,rrNrr) rerr+rrequoter 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)rr1r,rrNr)rerrr new_ctyper rs rrzMessage.del_param s     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)rerrrs r get_filenamezMessage.get_filenameBsu ((>>*g7LMM w  ~~fg~FFH w  N+H55;;===rc t}|d|}||ur|Stj|S)Nboundary)rrrrrstrip)rerrr!s r get_boundaryzMessage.get_boundaryRsR ((>>*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&rrrr1)rerrr pcharsetrxs 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)r.)rpartrs rrz(Message.get_charsets..s'JJJd((11JJJrwalk)rers `r get_charsetszMessage.get_charsetss- KJJJdiikkJJJJrc |d}|dSt|d}|S)Nrr)rrr1)rer+c_ds rget_content_dispositionzMessage.get_content_dispositionsH .// =4%  #))++ rr2)FrN)FN)NFrh)NrT)rTNr F)rT)rT)3__name__ __module__ __qualname__r rfrkriryrxr~rrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrr#r+r.r4r7email.iteratorsr3rrrrrsK ' * * * *   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.policyr?superrf)rer\r? __class__s rrfzMIMEPart.__init__s= > , , , , , ,F      rFct ||jn|}||j}t|||Srh)r\max_line_lengthrAri)rerqror\rBs rrizMIMEPart.as_stringsC !'F  !1Lww  <@@@rc`||jdS)NT)utf8r\)rir\clonerjs rrkzMIMEPart.__str__s)~~T[%6%6D%6%A%A~BBBrcJ|d}|dn |jdkS)NrF attachment)rcontent_disposition)rer6s 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 multipartrelatedstart content-idr) rLrrr0r~ iter_parts _find_bodyrr) rer1preferencelistmaintypesubtypesubpart candidaterQsubpartss rrTzMIMEPart._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 ! rrPhtmlplainc t|}d}|||D]\}}||kr |}|}|dkrn|S)Nr)r"rT)rerU best_priobodyprior1s rget_bodyzMIMEPart.get_body se '' //$??  JD$i 199E r>rNr\rNr]rOrPrO 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) NrrOrgrPrQFrRTr) rrrrrrrr2pop _body_typesrL) rerVrWrrrQr attachmentsr1seens 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{VdSdSrh)r~rrjs rrSzMIMEPart.iter_partsYsU       *'')) ) ) ) ) ) ) ) ) ) * *r)content_managerc@| |jj}|j|g|Ri|Srh)r\ro get_contentreroargskws rrqzMIMEPart.get_contentas5  ""k9O**4=$==="===rcD| |jj}|j|g|Ri|dSrh)r\ro set_contentrrs rrvzMIMEPart.set_contentfs;  ""k9O##D64666266666rc^|dkrA|}||fz}||vr#td||g}g}|jD][\}}|dr|||fD|||f\|r:t||j } || _|j | _ | g|_ ng|_ ||_d|z|d<|| d|dSdS)NrOzCannot convert {} to {}content-rGz multipart/rr!) rrrJrr]r1rGr2rr\r_r) rerWdisallowed_subtypesr!existing_subtype keep_headers part_headersrr+r1s r_make_multipartzMIMEPart._make_multipartksc  $ $ & &+ 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)NrP)rgmixedr}rer!s r make_relatedzMIMEPart.make_relateds! Y(@(KKKKKrc4|dd|dS)Nrg)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)NrOmake_rGrzContent-Disposition)rrgetattrrr\rvr)re_subtyperrsrtr1s r_add_multipartzMIMEPart._add_multiparts  % % ' '; 6 6((**h66 -GD'H, - - / / /tDzz---$%"%%%  0*$66*/D& ' Drc,|jdg|Rddi|dS)NrPrinlinerrersrts r add_relatedzMIMEPart.add_relateds0ICCCCHCCCCCCrc(|jdg|Ri|dS)Nrgrrs radd_alternativezMIMEPart.add_alternatives+M7D777B77777rc,|jdg|Rddi|dS)NrrrJrrs radd_attachmentzMIMEPart.add_attachments0GEdEEE,E"EEEEErc"g|_d|_dSrhr]r_rjs rclearzMIMEPart.clears  rc@d|jD|_d|_dS)Ncjg|]0\}}|d,||f1S)rx)r1rG)rnrs rrz*MIMEPart.clear_content..sQBBBDAq ! 4 4Z @ @B!QBBBrrrjs r clear_contentzMIMEPart.clear_contents3BBDMBBB  rrh)FNN)r[)r8r9r:rfrirkrLrTrbrjrmrSrqrvr}rrrrrrrrr __classcell__rBs@rr=r=s!!!!!!AAAAAA CCCQQQBBB:(111K555n***26>>>>> 2677777 1116LLLLBBBB444459DDD888FFFrr=ceZdZfdZxZS)rcPtj|i|d|vrd|d<dSdS)Nrr)rArv)rersrtrBs rrvzEmailMessage.set_contentsBT(R(((  % %#(D  & %r)r8r9r:rvrrs@rrrs8)))))))))r)NT)__all__rKreriorremailrremail._policybaser r r r`email._encoded_wordsr rrcompiler(rr,r8r;rXrr=rrrrrs ? n % ........%%%%%%))))))     BJ2 3 3        D($$$###>C %C %C %C %C %C %C %C %L\\\\\w\\\~)))))8)))))r