
    -hh                     :   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJr  / SQrSrSrSrSrSrS	r\R,                  " S
\R.                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r#S r$S  r%S! r&S" r'S# r( \RR                  " S$S$S%5        S&r* S SK,r,S&r- " S( S)5      r/\-(       a   " S* S+\/5      r0\Rc                  S+5        S,r2 " S- S.\/5      r3\4S/:X  a  S0 r5\5" S15      r6\5" S25      Ro                  S35      r8\9" S45        S5r:\Rv                  Ry                  5       =r=(       a(  \:\=-   r:\Rv                  Ry                  5       =r=(       a  M(  \9" S6\>" \:5      -  5        \/" S75      r?\?R                  S85        \?R                  \6\8\:5        \?R                  5         gg! \+ a    S'r* GNf = f! \. a    S'r- GNf = f)9    N)body_encode)SMTPExceptionSMTPNotSupportedErrorSMTPServerDisconnectedSMTPResponseExceptionSMTPSenderRefusedSMTPRecipientsRefusedSMTPDataErrorSMTPConnectErrorSMTPHeloErrorSMTPAuthenticationError	quoteaddr	quotedataSMTP   i  
s   
i       z	auth=(.*)c                       \ rS rSrSrg)r   H    N__name__
__module____qualname____firstlineno____static_attributes__r       0/opt/python-3.13.8/usr/lib/python3.13/smtplib.pyr   r   H        r   r   c                       \ rS rSrSrg)r   K   r   Nr   r   r   r   r   r   K   r   r   r   c                       \ rS rSrSrg)r   R   r   Nr   r   r   r   r   r   R   r   r   r   c                       \ rS rSrS rSrg)r   Z   c                 ,    Xl         X l        X4U l        g N)	smtp_code
smtp_errorargs)selfcodemsgs      r   __init__SMTPResponseException.__init__c   s    K	r   )r*   r(   r)   Nr   r   r   r   r.   r   r   r   r   r   r   Z   s     r   r   c                       \ rS rSrS rSrg)r   h   c                 :    Xl         X l        X0l        XU4U l        g r'   )r(   r)   senderr*   )r+   r,   r-   r4   s       r   r.   SMTPSenderRefused.__init__o   s    '	r   )r*   r4   r(   r)   Nr0   r   r   r   r   r   h   s    (r   r   c                       \ rS rSrS rSrg)r	   u   c                      Xl         U4U l        g r'   )
recipientsr*   )r+   r9   s     r   r.   SMTPRecipientsRefused.__init__}   s    $M	r   )r*   r9   Nr0   r   r   r   r	   r	   u   s    "r   r	   c                       \ rS rSrSrg)r
      r   Nr   r   r   r   r
   r
      r   r   r
   c                       \ rS rSrSrg)r      r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)r      r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)r      r   Nr   r   r   r   r   r      r   r   r   c                     [         R                  R                  U 5      u  pX4S:X  a+  U R                  5       R	                  S5      (       a  U $ SU -  $ SU-  $ )N rE   <z<%s>)emailutils	parseaddrstrip
startswith
addrstringdisplaynameaddrs      r   r   r      s[    
 --j9Kh&((--
""D=r   c                 Z    [         R                  R                  U 5      u  pX4S:X  a  U $ U$ )NrD   )rG   rH   rI   rL   s      r   
_addr_onlyrQ      s/    --j9Kh&Kr   c           	      f    [         R                  " SS[         R                  " S[        U 5      5      $ )Nz(?m)^\.z..(?:\r\n|\n|\r(?!\n))resubCRLFdatas    r   r   r      s*     66*d
&d35 5r   c                 2    [         R                  " SSU 5      $ )Ns   (?m)^\.s   ..)rU   rV   )bindatas    r   _quote_periodsr\      s    66+ug..r   c                 :    [         R                  " S[        U 5      $ )NrS   rT   rX   s    r   	_fix_eolsr^      s    FF*D$77r   r   md5TFc                   z   \ rS rSrSrSrSrSrSrSr	Sr
\rSSS\R                  S4S jrS rS	 rS
 rS rS rS-S jrS rS.S jrS rS.S jrS.S jrS.S jrS rS.S jrS rS rS r S/S jr!S/S jr"S r#S r$\$r%S r&S r'SS .S! jr(S0S" jr)S0S# jr*S0S$ jr+SS .S% jr,SS&.S' jr-  S1S( jr.  S2S) jr/S* r0S+ r1S,r2g)3r      r   NehloFrE   c                    Xl         X@l        0 U l        SU l        XPl        SU l        U(       a4  U R                  X5      u  pgUS:w  a  U R                  5         [        Xg5      eUb  X0l	        g [        R                  " 5       nSU;   a  Xl	        g Sn	 [        R                  " [        R                  " 5       5      n	SU	-  U l	        g ! [        R                   a     N!f = f)Nasciir      .z	127.0.0.1z[%s])_hosttimeoutesmtp_featurescommand_encodingsource_address_auth_challenge_countconnectcloser   local_hostnamesocketgetfqdngethostbynamegethostnamegaierror)
r+   hostportro   rh   rk   r,   r-   fqdnrO   s
             r   r.   SMTP.__init__   s    $ 
  ',%&",,t2KTs{

&t11%"0
 >>#Dd{&*# #!//0B0B0DED '-tm#  s   )C CCc                     U $ r'   r   r+   s    r   	__enter__SMTP.__enter__  s    r   c                      U R                  S5      u  p#US:w  a  [        X#5      e U R                  5         g ! [         a     Nf = f! U R                  5         f = f)NQUIT   )docmdr   r   rn   )r+   r*   r,   messages       r   __exit__SMTP.__exit__!  sY    	 JJv.MDs{+D:: 
 JJL & 		 JJLs&   $8 A 
AA AA Ac                     Xl         g r'   )
debuglevel)r+   r   s     r   set_debuglevelSMTP.set_debuglevel+  s	     %r   c                     U R                   S:  aH  [        [        R                  R                  5       R	                  5       /UQ7S[
        R                  06  g [        US[
        R                  06  g )N   file)r   printdatetimenowtimesysstderrr+   r*   s     r   _print_debugSMTP._print_debug4  sM    ??Q(##'')..0I4IcjjI4)cjj)r   c                     Ub  U(       d  [        S5      eU R                  S:  a  U R                  SX4U R                  5        [        R
                  " X4UU R                  5      $ )N0Non-blocking socket (timeout=0) is not supportedr   zconnect: to)
ValueErrorr   r   rk   rp   create_connection)r+   ru   rv   rh   s       r   _get_socketSMTP._get_socket:  s`     wOPP??Qmd\4;N;NO''g(,(;(;= 	=r   c                 &   U(       a  X0l         U(       dR  UR                  S5      UR                  S5      :X  a.  UR                  S5      nUS:  a  US U XS-   S  p! [        U5      nU(       d  U R                  n[        R                  " SXU5        U R                  XU R                  5      U l        S U l        U R                  5       u  pVU R                  S:  a  U R                  S[!        U5      5        XV4$ ! [         a    [        S5      ef = f)N:r   r   znonnumeric portzsmtplib.connectconnect:)rk   findrfindintr   OSErrordefault_portr   auditr   rh   sockr   getreplyr   r   repr)r+   ru   rv   rk   ir,   r-   s          r   rm   SMTP.connectD  s     "034::c?:

3AAv!"1XtEF|d5t9D $$D		#T6$$T>		mmo??Qj$s)4{ " 5!"3445s   C: :Dc                    U R                   S:  a  U R                  S[        U5      5        U R                  (       ad  [	        U[
        5      (       a  UR                  U R                  5      n[        R                  " SX5         U R                  R                  U5        g [        S5      e! [         a    U R                  5         [        S5      ef = f)Nr   zsend:zsmtplib.sendServer not connectedzplease run connect() first)r   r   r   r   
isinstancestrencoderj   r   r   sendallr   rn   r   )r+   ss     r   send	SMTP.sende  s    ??QgtAw/99!S!! HHT223IInd.E		!!!$
 ))EFF	  E

,-CDDEs   B, ,&Cc                     US:X  a  UnOU SU 3nSU;   d  SU;   a0  UR                  SS5      R                  SS5      n[        SU 35      eU R                  U [         35        g )NrE    
z\nz\rz=command and arguments contain prohibited newline characters: )replacer   r   rW   )r+   cmdr*   r   s       r   putcmdSMTP.putcmdx  su    2:A%qA19			$&..tU;AOPQsS  			QCv,r   c                 2   / nU R                   c   U R                  R                  S5      U l           U R                   R                  [        S-   5      nU(       d  U R                  5         [        S5      eU R                  S:  a  U R                  S[        U5      5        [        U5      [        :  a  U R                  5         [        SS5      eUR                  US	S  R                  S
5      5        US S n [!        U5      nUSS	 S:w  a  OM  SR%                  U5      nU R                  S:  a  U R                  SU< SU< 35        XV4$ ! [
         a,  nU R                  5         [        S[        U5      -   5      eS nAff = f! ["         a    Sn M  f = f)Nrbr   z Connection unexpectedly closed: zConnection unexpectedly closedr   zreply:i  zLine too long.   s    	
      -   
zreply: retcode (z); Msg: )r   r   makefilereadline_MAXLINEr   rn   r   r   r   r   r   lenr   appendrJ   r   r   join)r+   resplineer,   errcodeerrmsgs          r   r   SMTP.getreply  sx    99		**40DI7yy))(Q,7
 

,-MNN"!!(DJ74y8#

+C1ABBKKQRz238Dd)
 AayD 5 8 D!??QPQ9  7

,-O/21v.6 7 77$  s)   "E 9F 
F'E>>FFFc                 D    U R                  X5        U R                  5       $ r'   r   r   )r+   r   r*   s      r   r   
SMTP.docmd  s    C}}r   c                     U R                  SU=(       d    U R                  5        U R                  5       u  p#X0l        X#4$ )Nhelo)r   ro   r   	helo_resp)r+   namer,   r-   s       r   r   	SMTP.helo  s7    
 	FD7D$7$78mmo{r   c                    0 U l         U R                  U R                  U=(       d    U R                  5        U R	                  5       u  p#US:X  a*  [        U5      S:X  a  U R                  5         [        S5      eX0l        US:w  a  X#4$ SU l	        U R                  R                  S5      R                  S5      nUS	 U GH  n[        R                  U5      nU(       aC  U R                   R                  SS	5      S
-   UR                  S5      S   -   U R                   S'   Mc  [         R                  " SU5      nU(       d  M  UR#                  S5      R%                  5       nUR&                  UR)                  S5      S  R+                  5       n	US:X  a2  U R                   R                  US	5      S
-   U	-   U R                   U'   GM  XR                   U'   GM     X#4$ )Nr   r   r      Tzlatin-1r   authrE   r   z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?feature)ri   r   ehlo_msgro   r   r   rn   r   	ehlo_resp
does_esmtpdecodesplitOLDSTYLE_AUTHmatchgetgroupsrU   grouplowerstringendrJ   )
r+   r   r,   r-   r   each
auth_matchmr   paramss
             r   rb   	SMTP.ehlo  s   
 !DMM4#>4+>+>?mmo 2:#c(a-JJL()?@@3;; ~~$$Y/55d;GD ',,T2J.2.A.A.E.Efb.Q/ * 1 1! 4Q 7/8##F+ DdKAq''),224!%%	"2"34::<f$373F3F3J3J7TV3W!4"$*4+D''0 4:''05 6 {r   c                 <    UR                  5       U R                  ;   $ r'   )r   ri   )r+   opts     r   has_extnSMTP.has_extn  s    yy{d1111r   c                 L    U R                  SU5        U R                  5       S   $ )Nhelpr   r   r   s     r   r   	SMTP.help  s#     	FD!}}q!!r   c                 2    SU l         U R                  S5      $ )Nrd   rset)rj   r   rz   s    r   r   	SMTP.rset  s     'zz&!!r   c                 F     U R                  5         g ! [         a     g f = fr'   )r   r   rz   s    r   _rset
SMTP._rset  s"    	IIK% 		s    
  c                 $    U R                  S5      $ )Nnoop)r   rz   s    r   r   	SMTP.noop  s    zz&!!r   c                 B   SnU(       ae  U R                   (       aT  [        S U 5       5      (       a)  U R                  S5      (       a  SU l        O[	        S5      eSSR                  U5      -   nU R                  SS[        U5      < U< 35        U R                  5       $ )	NrE   c              3   F   #    U  H  oR                  5       S :H  v   M     g7f)smtputf8N)r   ).0xs     r   	<genexpr>SMTP.mail.<locals>.<genexpr>#  s     :'Q779j('s   !r   zutf-8z SMTPUTF8 not supported by serverr   mailzfrom:)	r   anyr   rj   r   r   r   r   r   )r+   r4   options
optionlists       r   r  	SMTP.mail  s     
t:':::==,,,3D)/:< <sxx00JF9V+<jIJ}}r   c                     SnU(       a%  U R                   (       a  SSR                  U5      -   nU R                  SS[        U5      < U< 35        U R	                  5       $ )NrE   r   rcptzto:)r   r   r   r   r   )r+   recipr  r  s       r   r  	SMTP.rcpt-  sG    
tsxx00JF5)9:FG}}r   c                    U R                  S5        U R                  5       u  p#U R                  S:  a  U R                  SX#45        US:w  a  [	        X#5      e[        U[        5      (       a  [        U5      R                  S5      n[        U5      nUSS  [        :w  a	  U[        -   nUS-   [        -   nU R                  U5        U R                  5       u  p!U R                  S:  a  U R                  SX!45        X!4$ )NrY   r   zdata:ib  rd      .)r   r   r   r   r
   r   r   r^   r   r\   bCRLFr   )r+   r-   r,   replqs        r   rY   	SMTP.data5  s     	F}}??Qg|43;++#s##n++G4s#AvID5 AIIaL--/KT"!!'D;7;r   c                 X    U R                  S[        U5      5        U R                  5       $ )Nvrfyr   rQ   r   r+   addresss     r   verifySMTP.verifyR  !    FJw/0}}r   c                 X    U R                  S[        U5      5        U R                  5       $ )Nexpnr  r  s     r   r  	SMTP.expnY  r  r   c                     U R                   c\  U R                  cN  SU R                  5       S   s=::  a  S::  d/  O  U R                  5       u  pSUs=::  a  S::  d  O  [	        X5      eg g g g )N   r   i+  )r   r   rb   r   r   )r+   r,   r   s      r   ehlo_or_helo_if_neededSMTP.ehlo_or_helo_if_needed`  se     >>!dnn&<499;q>0S0#yy{t*s*'33 + 1 '=!r   Tinitial_response_okc                J   UR                  5       nU(       a  U" 5       OS nUb;  [        UR                  S5      SS9nU R                  SUS-   U-   5      u  pgSU l        OU R                  SU5      u  pgSU l        US:X  a  U =R                  S-  sl        [
        R                  " U5      n[        U" U5      R                  S5      SS9nU R                  U5      u  pgU R                  [        :  a  [        S	[        Xg45      -   5      eUS:X  a  M  US
;   a  Xg4$ [        Xg5      e)Nrd   rE   )eolAUTHr   r   r   iN  z4Server AUTH mechanism infinite loop. Last response:    i  )upperencode_base64r   r   rl   base64decodebytes_MAXCHALLENGEr   r   r   )	r+   	mechanism
authobjectr!  initial_responseresponser,   r   	challenges	            r   r   	SMTP.authq  s!   , OO%	,?JLT'$%5%<%<W%E2NH::fi#o.HILT)*D&::fi8LT)*D&ck&&!+&**40I$9%,,W52?H::h/LT))M9#JD<()  ck :<%d11r   c                     Uc  g [         (       d  [        S5      eU R                  R                  S5      n[        R
                  " X!S5      nU R                   SUR                  5        3$ )NzCRAM-MD5 is not supportedrd   r_   r   )_have_cram_md5_supportr   passwordr   hmacHMACuser	hexdigest)r+   r0  r4  authcodes       r   auth_cram_md5SMTP.auth_cram_md5  sb     %% ;<<==''099X%8))Ah002344r   c                 >    SU R                   < SU R                  < 3$ )N )r7  r4  r+   r0  s     r   
auth_plainSMTP.auth_plain  s     "YY66r   c                 X    Ub  U R                   S:  a  U R                  $ U R                  $ )N   )rl   r7  r4  r>  s     r   
auth_loginSMTP.auth_login  s+      : :Q >99== r   c                "   U R                  5         U R                  S5      (       d  [        S5      eU R                  S   R	                  5       n[
        (       a  / SQnOSS/nU Vs/ s H  nXd;   d  M
  UPM     nnU(       d  [        S5      eXsU l        U l        U HN  nSUR                  5       R                  SS	5      -   n	 U R                  U[        X	5      US
9u  pU
S;   a  X4s  $ MP     Wes  snf ! [         a  nUn S nAMk  S nAff = f)Nr   z,SMTP AUTH extension not supported by server.)zCRAM-MD5PLAINLOGINrF  rG  z(No suitable authentication method found.auth_-_r   r%  )r  r   r   ri   r   r3  r   r7  r4  r   r   r   getattrr   )r+   r7  r4  r!  advertised_authlistpreferred_authsr   authlist
authmethodmethod_namer,   r   r   last_exceptions                 r   login
SMTP.login  s2   8 	##%}}V$$'>@ @ #11&9??A "!<O&0O &5 4_T2 _ 4 JKK
 $( 	4="J!J$4$4$6$>$>sC$HHK	##yy :(;  )  =
 :% <' & # /4& + #!"#s$   '	C24C2$C77
DD		Dcontextc                   U R                  5         U R                  S5      (       d  [        S5      eU R                  S5      u  p#US:X  a}  [        (       d  [        S5      eUc  [        R                  " 5       nUR                  U R                  U R                  S9U l	        S U l        S U l        S U l        0 U l        SU l        X#4$ [!        X#5      e)Nstarttlsz+STARTTLS extension not supported by server.STARTTLSre   z&No SSL support included in this Pythonserver_hostnameF)r  r   r   r   	_have_sslRuntimeErrorssl_create_stdlib_contextwrap_socketr   rg   r   r   r   ri   r   r   )r+   rU  r   replys       r   rW  SMTP.starttls  s    " 	##%}}Z(('=? ?

:.3;9"#KLL446++DII<@JJ , HDIDI
 "DN!DN"$D#DO } (44r   c                    U R                  5         / n[        U[        5      (       a  [        U5      R	                  S5      nU R
                  (       aM  U R                  S5      (       a  UR                  S[        U5      -  5        U H  nUR                  U5        M     U R                  X5      u  pUS:w  a3  US:X  a  U R                  5         OU R                  5         [        XU5      e0 n
[        U[        5      (       a  U/nU HH  nU R                  X5      u  pUS:w  a  US:w  a  X4X'   US:X  d  M/  U R                  5         [        U
5      e   [        U
5      [        U5      :X  a  U R                  5         [        U
5      eU R                  U5      u  pUS:w  a2  US:X  a  U R                  5         OU R                  5         [!        X5      eU
$ )Nrd   sizezsize=%dr   i     )r  r   r   r^   r   r   r   r   r   r  rn   r   r   r  r	   rY   r
   )r+   	from_addrto_addrsr-   mail_optionsrcpt_options
esmtp_optsoptionr,   r   senderrsr   s               r   sendmailSMTP.sendmail+  s   @ 	##%
c3C.''0C??}}V$$!!)c#h"67&!!&) 'yy73;s{



#D	::h$$ zHD99T8LT$#+"&s{

+H55  x=CM)JJL'11yy~3;s{



++r   c                 P   U R                  5         UR                  S5      nUc  SnO[        U5      S:X  a  SnO[        S5      eUc=  US-   U;   a  XS-      OXS-      n[        R
                  R                  U/5      S   S   nUcZ  XS	-      XS
-      XS-      4 Vs/ s H
  nUc  M  UPM     n	n[        R
                  R                  U	5       V
s/ s H  oS   PM	     nn
[        R                  " U5      nUS
	 US	 Sn SR                  U/UQ5      R                  S5        [        R                  " 5        nU(       a>  [        R                  R!                  XR"                  R%                  SS9S9n/ UQSPSP7nO[        R                  R!                  U5      nUR'                  USS9  UR)                  5       nS S S 5        U R+                  X#WUU5      $ s  snf s  sn
f ! [         a&    U R                  S5      (       d  [        S5      eSn Nf = f! , (       d  f       N_= f)NzResent-DaterE   r   zResent-z0message has more than one 'Resent-' header blockSenderFromr   ToBccCcz
Resent-BccFrd   r   zOne or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityT)utf8)policySMTPUTF8zBODY=8BITMIMEr   )linesep)r  get_allr   r   rG   rH   getaddressescopyr   r   UnicodeEncodeErrorr   r   ioBytesIO	generatorBytesGeneratorru  cloneflattengetvaluerl  )r+   r-   re  rf  rg  rh  resentheader_prefixfaddr_fieldsamsg_copyinternationalbytesmsggflatmsgs                   r   send_messageSMTP.send_message  sN   > 	##%]+>M[A%MOPP  -x7C? X56 #F$: ;  00)=a@CI'*4+?'@'*5+@'A'*4+?'@'B - 'B    'BK - ',kk&>&>{&KL&K!&KHL99S>UO\"	!GGY**+227; ZZ\XOO22ZZ%5%54%5%@ 3 BKKzK?KOO228<IIhI/'')G  }}Y'<)+ 	+9- M " 	!==,,+KL L !M	! \s1   G)GG#G$ 9BH$-HH
H%c                     U R                   nS U l         U(       a  UR                  5         U R                  nS U l        U(       a  UR                  5         g g ! U R                  nS U l        U(       a  UR                  5         f f = fr'   )r   rn   r   )r+   r   r   s      r   rn   
SMTP.close  si    		99DDI

99DDI

  99DDI

 s   *A -Bc                     U R                  S5      nS =U l        U l        0 U l        SU l        U R                  5         U$ )NquitF)r   r   r   ri   r   rn   )r+   ress     r   r  	SMTP.quit  s;    jj *.. 


r   )rl   rg   rj   r   r   r   ri   r   r   ro   r4  r   rk   rh   r7  	localhostr   N)rE   )r   r'   )r   r   )NNr   r   )3r   r   r   r   r   r   r   r   r   r   r   	SMTP_PORTr   rp   _GLOBAL_DEFAULT_TIMEOUTr.   r{   r   r   r   r   rm   r   r   r   r   r   rb   r   r   r   r   r   r  r  rY   r  r  r  r  r   r:  r?  rC  rR  rW  rl  r  rn   r  r   r   r   r   r   r      s    : JDDIHIJLQt77 $.4`%*=BG& /b1f2""

"*:
 D4" BF .2`
57
! <@ BH #' +Z ?A fP :>35K+Zr   r   c                   V   ^  \ rS rSr\rS\R                  SSS.S jjrU 4S jr	Sr
U =r$ )SMTP_SSLi  N)rh   rk   rU  c                p    Uc  [         R                  " 5       nX`l        [        R	                  XX#UU5        g r'   )r]  r^  rU  r   r.   )r+   ru   rv   ro   rh   rk   rU  s          r   r.   SMTP_SSL.__init__  s1     446"LMM$dG(*r   c                    > U R                   S:  a  U R                  SX45        [        TU ]  XU5      nU R                  R                  UU R                  S9nU$ )Nr   r   rY  )r   r   superr   rU  r_  rg   )r+   ru   rv   rh   
new_socket	__class__s        r   r   SMTP_SSL._get_socket  s[    "!!*tl;,TAJ11*BF** 2 NJr   rT  )rE   r   N)r   r   r   r   SMTP_SSL_PORTr   rp   r  r.   r   r   __classcell__r  s   @r   r  r    s,     %	* & > >$($	*	 	r   r  i  c                   ^   ^  \ rS rSrSrS\SS\R                  4U 4S jjrSU 4S jjr	Sr
U =r$ )	LMTPi  lhlorE   Nc                 $   > [         TU ]  XUXES9  g )N)ro   rk   rh   )r  r.   )r+   ru   rv   ro   rk   rh   r  s         r   r.   LMTP.__init__.  s     	N(6 	 	Ir   c                   > US   S:w  a  [         TU ]  XUS9$ U R                  b  U R                  (       d  [        S5      e [        R                  " [        R
                  [        R                  5      U l        U R                  [        R                  La%  U R                  R                  U R                  5        S U l
        U R                  R                  U5        U R                  5       u  pEU R                  S:  a  U R                  SU5        XE4$ ! [         aV    U R                  S:  a  U R                  SU5        U R                  (       a  U R                  R                  5         S U l        e f = f)Nr   /)rk   r   zconnect fail:r   )r  rm   rh   r   rp   AF_UNIXSOCK_STREAMr   r  
settimeoutr   r   r   r   rn   r   )r+   ru   rv   rk   r,   r-   r  s         r   rm   LMTP.connect4  s   7c>7?4n?MM<<#DLLOPP	fnnf6H6HIDI||6#A#AA		$$T\\2DIIId# mmo??Qj#.{  	"!!/48yy		!DI	s   BD A E6)r   r   r  )r   r   r   r   r   	LMTP_PORTrp   r  r.   rm   r   r  r  s   @r   r  r    s,     HYt $f.L.LI r   r  __main__c                     [         R                  R                  U S-   5        [         R                  R                  5         [         R                  R                  5       R                  5       $ )Nz: )r   stdoutwriteflushstdinr   rJ   )prompts    r   r  r  S  sD    

$'

yy!!#))++r   rp  rq  ,zEnter message, end with ^D:rE   zMessage length is %dr  r   )Crp   r|  rU   email.utilsrG   email.messageemail.generatorr)  r5  rz  r   r   email.base64mimer   r(  __all__r  r  rW   r  r   r+  compileIr   r   r   r   r   r   r   r	   r
   r   r   r   r   rQ   r   r\   r^   digestr3  r   r]  r[  ImportErrorr   r  r   r  r  r   r  fromaddrr   toaddrsr   r-   r  r   r   r   serverr   rl  r  r   r   r   <module>r     sU  X  	 	        
 9-
 	

<.?G ?M ]  M  (- (
"M 
"2) 21, 1-) -3 5/8"KKS%  " In n` 4 < NN:
 	/4 /h z,
 f~HTl  %G	
'(
C))$$&
&$
&Dj ))$$&
&$
&	
 3s8
+,+F
!
OOHgs+
KKM# s  #"#  Is$   G? 5H ?H
HHH