+
    BiS                     x   ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IH t  ^ R
IH!t! ]PD                  ! RR7       ]PF                  t#]PH                  R8X  d   R t%]%] PL                  n%        R t' ! R R4      t( ! R R](]PR                  4      t* ! R R](]PR                  4      t+R t,Rt-Rt. ! R R]PR                  4      t/ ! R R]PR                  4      t0 ! R R]PR                  4      t1 ! R R ]PR                  4      t2 ! R! R"]PR                  4      t3R#R$R%R&R'R(/t4RBt5R)t6R*R#R'.R+R%./t7 ! R, R-]84      t9 ! R. R/] PL                  4      t: ! R0 R1] Pv                  4      t< ! R2 R3]PR                  4      t= ! R4 R5]<4      t> ! R6 R7]PR                  4      t?]! R8R9R:7      t@ ! R; R<]:4      tA ! R= R>]<4      tB ! R? R@]PR                  4      tC]DRA8X  d   ]P                  ! 4        R# R# )C    N)EmailMessage)body_encode)supportmock_socket)hashlib_helper)socket_helper)threading_helper)asyncore)smtpd)MockT)moduledarwinc                     R # N selfs   &(/usr/lib/python3.14/test/test_smtplib.pyhandle_exptr   %   s        c                    VP                  4        V P                  4         VP                  4       w  r4R pV'       dL   V^ 8  dE   \        P                  ! . V.. 4      w  rgpV'       d   VP	                  V4      p	WR pV^,          pKS  VP                  4        VP                  4        V P                  4        R#   \         d     L/i ; i  TP                  4        T P                  4        i ; i)i  N)listensetacceptselectsendcloseTimeoutError)
evtbufservconnaddrnrwesents
   &&&       r   serverr)   *   s    KKMGGI[[]
 a!emmB3GA!yy~%jFA



	   	

	s.   B; 	C AC ;C	C C		C "C.c                   n   a  ] tR t^@t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )GeneralTestsc                2    \         \        n        ^V n        R# )   N)r   smtplibsocketportr   s   &r   setUpGeneralTests.setUpB   s    $	r   c                $    \         \        n         R # r   )r/   r.   r   s   &r   tearDownGeneralTests.tearDownF   s	    r   c                Z    R pRpV P                  V\        P                  ! V4      4       R# )zabc
.jklfoo
..bluezabc
..jkl
foo
...blueN)assertEqualr.   	quotedata)r   teststrexpecteds   &  r   testQuoteDataGeneralTests.testQuoteDataK   s'    -37#4#4W#=>r   c                    \         P                  ! R 4       V P                  \        V P                  4      pVP                  4        R#    220 Hola mundoNr   
reply_withclientHOSTr0   r   r   rB   s   & r   
testBasic1GeneralTests.testBasic1P   s.    01T499-r   c                    \         P                  ! R 4       V P                  \        V P                  RR7      pV P                  VP                  R4       VP                  4        R# )r?   )source_addressN)z	127.0.0.1iM  )r   rA   rB   rC   r0   r7   rH   r   rD   s   & r   testSourceAddressGeneralTests.testSourceAddressV   sP    01T499,?  A..0DEr   c                    \         P                  ! R 4       V P                  \        : RV P                  : 24      pVP                  4        R# )r?   :Nr@   rD   s   & r   
testBasic2GeneralTests.testBasic2^   s1    01dii89r   c                    \         P                  ! R 4       V P                  \        V P                  RR7      pV P                  VP                  R4       VP                  4        R# )r?   testhost)local_hostnameN)r   rA   rB   rC   r0   r7   rQ   r   rD   s   & r   testLocalHostNameGeneralTests.testLocalHostNamed   sH    01T499ZH..
;r   c                   \         P                  ! R 4       V P                  \         P                  ! 4       4       \         P                  ! ^4       V P                  \         P                  ! 4       ^4        V P                  \        V P                  4      p\         P                  ! R4       V P                  VP                  P                  4       ^4       VP                  4        R#   \         P                  ! R4       i ; ir>   )r   rA   assertIsNonegetdefaulttimeoutsetdefaulttimeoutr7   rB   rC   r0   sock
gettimeoutr   rD   s   & r   testTimeoutDefaultGeneralTests.testTimeoutDefaultk   s    01+779:%%b)668"=	0[[tyy1F))$///126 ))$/s   7 C) )Dc                   \         P                  ! R 4       V P                  \        P                  ! 4       4       \        P
                  ! ^4        V P                  \        V P                  RR7      p\        P
                  ! R4       V P                  VP                  P                  4       4       VP                  4        R#   \        P
                  ! R4       i ; i)r?   Ntimeout)r   rA   rU   r/   rV   rW   rB   rC   r0   rX   rY   r   rD   s   & r   testTimeoutNoneGeneralTests.testTimeoutNonew   s    01&2245  $	+[[tyy$[?F$$T*&++0023 $$T*s   "C Cc                    \         P                  ! R 4       V P                  \        4      ;_uu_ 4        V P	                  \
        V P                  ^ R7       RRR4       R#   + '       g   i     R# ; ir?   r]   N)r   rA   assertRaises
ValueErrorrB   rC   r0   r   s   &r   testTimeoutZeroGeneralTests.testTimeoutZero   sG    01z**KKdiiK3 +***s   #A!!A2	c                    \         P                  ! R 4       V P                  \        V P                  ^R7      pV P                  VP                  P                  4       ^4       VP                  4        R# rb   )	r   rA   rB   rC   r0   r7   rX   rY   r   rD   s   & r   testTimeoutValueGeneralTests.testTimeoutValue   sO    01T499b9//126r   c                   \         P                  ! R 4       V P                  4       pVP                  ^4       \        P
                  ! 4       ;_uu_ 4       pVP                  \        V P                  4       RRR4       VP                  4        \        P                  ! R\        P                  4      pV P                  XP                  4       V4       R#   + '       g   i     Lg; i)   220 Hello worldNz	^connect:r   rA   rB   set_debuglevelr   captured_stderrconnectrC   r0   r   recompile	MULTILINEassertRegexgetvaluer   rB   stderrr:   s   &   r   test_debuglevelGeneralTests.test_debuglevel   s    12a $$&&&NN4+ '::lBLL9*H5	 '&   !CC%	c                   \         P                  ! R 4       V P                  4       pVP                  ^4       \        P
                  ! 4       ;_uu_ 4       pVP                  \        V P                  4       RRR4       VP                  4        \        P                  ! R\        P                  4      pV P                  XP                  4       V4       R#   + '       g   i     Lg; i)rk   Nz#^\d{2}:\d{2}:\d{2}\.\d{6} connect: rl   ru   s   &   r   test_debuglevel_2GeneralTests.test_debuglevel_2   s    12a $$&&&NN4+ '::D ll,*H5 '&ry   )r0   N)__name__
__module____qualname____firstlineno__r1   r4   r;   rE   rI   rM   rR   rZ   r_   re   rh   rw   r{   __static_attributes____classdictcell____classdict__s   @r   r+   r+   @   sK      
?

	4
6	6 	6r   r+   c                   .    ] tR t^t]P
                  tRtR# )SMTPGeneralTestsr   N)r}   r~   r   r   r.   SMTPrB   r   r   r   r   r   r      s    \\Fr   r   c                      a a ] tR t^t o]P
                  t]P                  ! ]	! ]
R4      R4      R 4       tV 3R ltRtVtV ;t# )LMTPGeneralTestsAF_UNIXz test requires Unix domain socketc                B   R p\         P                  ! R4        V P                  WP                  4      p\         P                  ! R4       V P                  VP                  P                  4       4       VP                  4        R#   \         P                  ! R4       i ; i)!/some/local/lmtp/delivery/programrk   N)	r   rA   rB   r0   rW   rU   rX   rY   r   )r   
local_hostrB   s   &  r   "testUnixDomainSocketTimeoutDefault3LMTPGeneralTests.testUnixDomainSocketTimeoutDefault   sq    8
12	0[[YY7F))$/&++0023 ))$/s   B Bc                   < \         SV `  4        R pV P                  \        4      ;_uu_ 4        V P	                  V^ R7       RRR4       R#   + '       g   i     R# ; i)r   r]   N)superre   rc   rd   rB   )r   r   	__class__s   & r   re    LMTPGeneralTests.testTimeoutZero   sC    !8
z**KK
AK. +***s   AA	r   )r}   r~   r   r   r.   LMTPrB   unittest
skipUnlesshasattrr/   r   re   r   r   __classcell__r   r   s   @@r   r   r      s@     \\F35WX Y/ /r   r   c                    VP                  4         \        \        R 4      '       d   \        P                  pM\        P
                  pRp\        P                  '       dQ   V^ 8  dJ   V! R\        P                  4       VP                  4       '       d   V P                  4        MV^,          pKf  VP                  4       '       g'   \        P                  ! R4       V P                  4        \        P                  ! 4        VP                  4        R#   \         d     Lpi ; i  TP                  4       '       g'   \        P                  ! R4       T P                  4        \        P                  ! 4        TP                  4        i ; i)polli  {Gz?g      ?N)r   r   r   r
   poll2r   
socket_mapis_setr   r   timesleep	close_all)r!   serv_evt
client_evtpoll_funr$   s   &&&  r   debugging_serverr      s   LLN66""~~H}}H!!!a!eT8../   ""

FA
   ""JJsOJJL     ""JJsOJJLs=   AD !3D D %D% &D D"D% !D""D% %A#Fz&---------- MESSAGE FOLLOWS ----------
z&------------ END MESSAGE ------------
c                      a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tRtV t R# )DebuggingServerTestsNc                   \         P                  ! 4       V n        \        P                  V n        \        P                  \        n        \        P                  V n	        \        P                  ! 4       V n        V P                  \        n        \        P                  ! 4       V n        \        P                  ! 4       V n        \"        P$                  V n        \        P                  ! 4       \"        n        \"        P(                  ! \*        ^ 3RRR7      V n        V P,                  P                  P/                  4       R,          w  V n        V n        V P,                  V P                  V P                   3p\        P4                  ! \6        VR7      V n        V P8                  P;                  4        V P                  P=                  4        V P                  P?                  4        R# )r   Tdecode_data:N   NtargetargsNnowhere) r	   threading_setup
thread_keyr/   getfqdnreal_getfqdnr   sysstdout
old_stdoutioStringIOoutput	threadingEventr   r   r   DEBUGSTREAMold_DEBUGSTREAMDebuggingServerrC   r!   getsocknamehostr0   Threadr   threadstartwaitclearr   	serv_argss   & r   r1   DebuggingServerTests.setUp   s*   *::<"NN$,,**kkm[[
!)#//+$00KKM))4)_6:<	  $yy//;;=bA	49YYt?	&&.>YO 	r   c                   V P                   \        n        V P                  P	                  4        V P
                  P                  4        \        P                  ! V P                  4       V P                  \        n        \        P                  P                  4        V P                   \        n        V =	V P#                  4        \        P$                  ! V P&                  !   R # r   )r   r/   r   r   r   r   r   r	   join_threadr   r   r   r   r   r   r   r   
doCleanupsthreading_cleanupr   r   s   &r   r4   DebuggingServerTests.tearDown  s    **$$T[[1__
! 00K**DOO<r   c                    V P                   P                  4       p\        P                  ! R RV\        P                  \        P
                  ,          R7      # )z(.*?)^X-Peer:\s*\S+\n(.*)z\1\2)flags)r   rt   rp   subrr   DOTALL)r   test_outputs   & r   get_output_without_xpeer-DebuggingServerTests.get_output_without_xpeer  s>    kk**,vv2G!bii)?A 	Ar   c                    \         P                  ! \        V P                  R \        P
                  R7      pVP                  4        R# 	localhostrQ   r^   Nr.   r   rC   r0   r   LOOPBACK_TIMEOUTquitr   smtps   & r   	testBasicDebuggingServerTests.testBasic  ,    ||D$))K$+$<$<>		r   c                8   \         P                  ! 4       p \        P                  ! V P                  V P
                  R \        P                  V P                  V3R7      pV P                  VP                  4       V P                  VP                  V P                  V34       V P                  VP                  R 4       VP                  4        R#   \         d>   pTP                  \        P                   8X  d   T P#                  RT,          4       h Rp?ii ; i)r   )rQ   r^   rH   zcouldn't bind to source port %dN)r   find_unused_portr.   r   r   r0   r   r   
addCleanupr   r7   rH   rQ   r   OSErrorerrno
EADDRINUSEskipTest)r   src_portr   r'   s   &   r   rI   &DebuggingServerTests.testSourceAddress   s     113	<<		499[(/(@(@04		8/DFD OODJJ'T00499h2GHT00+>IIK 	ww%***?(JK	s   B8C D8DDc                   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       RpV P                  VP                  4       V4       VP                  4        R# r   r   N   s   OK)r.   r   rC   r0   r   r   r   r   r7   noopr   r   r   r:   s   &  r   testNOOPDebuggingServerTests.testNOOP0  W    ||D$))K$+$<$<>

#h/		r   c                   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       RpV P                  VP                  4       V4       VP                  4        R# r   )r.   r   rC   r0   r   r   r   r   r7   rsetr   r   s   &  r   testRSETDebuggingServerTests.testRSET8  r   r   c                   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       RpV P                  VP                  4       V4       VP                  4        R# )r   r   N)r   s   
SIZE 33554432
HELP)r.   r   rC   r0   r   r   r   r   r7   ehlor   r   s   &  r   testELHODebuggingServerTests.testELHO@  sW    ||D$))K$+$<$<>

#2h/		r   c                .   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       RpVP                  R4       V P                  VP                  4       V4       VP                  4        R# )r   r   EXPNN)i  s   EXPN not implemented)r.   r   rC   r0   r   r   r   r   putcmdr7   getreplyr   r   s   &  r   testEXPNNotImplemented+DebuggingServerTests.testEXPNNotImplementedI  sc    ||D$))K$+$<$<>

#1F(3		r   c                   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       V P                  \        4      ;_uu_ 4       pVP                  R4       RRR4       V P                  R\        XP                  4      4       VP                  4        R#   + '       g   i     LG; i)r   r   zhelo
X-INJECTEDNprohibited newline characters)r.   r   rC   r0   r   r   r   r   rc   rd   r   assertInstr	exceptionr   )r   r   excs   &  r   &test_issue43124_putcmd_escapes_newline;DebuggingServerTests.test_issue43124_putcmd_escapes_newlineS  s    ||D$))K$+$<$<>

#z**cKK*+ +5s3==7IJ		 +*s   /C  C	c                P   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       RpV P                  VP                  R4      V4       V P                  VP                  R4      V4       VP                  4        R# )r   r   nobody@nowhere.comN)   s>   Cannot VRFY user, but will accept message and attempt delivery)r.   r   rC   r0   r   r   r   r   r7   vrfyverifyr   r   s   &  r   testVRFYDebuggingServerTests.testVRFY]  sw    ||D$))K$+$<$<>

#2#78(C%9:HE		r   c                ,   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       VP                  4        RpV P                  VP                  4       V4       VP                  4        R# )r   r   N)i  s   Duplicate HELO/EHLO)r.   r   rC   r0   r   r   r   r   helor7   r   r   s   &  r   testSecondHELO#DebuggingServerTests.testSecondHELOg  sb     ||D$))K$+$<$<>

#		0h/		r   c                   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       V P                  VP                  4       R4       VP                  4        R# )r   r   Ns@   Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY)r.   r   rC   r0   r   r   r   r   r7   helpr   r   s   & r   testHELPDebuggingServerTests.testHELPr  sY    ||D$))K$+$<$<>

# 'G 	H		r   c                6   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       VP                  RRV4       \        P                  ! R4       VP                  4        V P                  P                  4        V P                  P                  4        V P                   P#                  4        \$        : V: R\&        : 2pV P)                  V P                   P+                  4       V4       R# )A test messager   r   JohnSallyr   
Nr.   r   rC   r0   r   r   r   r   sendmailr   r   r   r   r   r   r   r   flush	MSG_BEGINMSG_ENDr7   rt   r   mr   mexpects   &   r   testSendDebuggingServerTests.testSendz  s    ||D$))K$+$<$<>

#fgq) 	

4		 )1g6--/9r   c                T   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       VP                  RRV4       \        P                  ! R4       VP                  4        V P                  P                  4        V P                  P                  4        V P                   P#                  4        \$        : VP'                  R4      : R\(        : 2pV P+                  V P                   P-                  4       V4       R# )	s   A test messager   r   r  r  r   asciir  N)r.   r   rC   r0   r   r   r   r   r!  r   r   r   r   r   r   r   r   r"  r#  decoder$  r7   rt   r%  s   &   r   testSendBinary#DebuggingServerTests.testSendBinary  s    ||D$))K$+$<$<>

#fgq)

4		 )188G+<gF--/9r   c                6   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       VP                  RRV4       \        P                  ! R4       VP                  4        V P                  P                  4        V P                  P                  4        V P                   P#                  4        \$        : V: R\&        : 2pV P)                  V P                   P+                  4       V4       R# )z.A test
.mes.sage.r   r   r  r  r   r  Nr   r%  s   &   r   testSendNeedingDotQuote,DebuggingServerTests.testSendNeedingDotQuote  s    !||D$))K$+$<$<>

#fgq)

4		 )1g6--/9r   c                :   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       V P                  \        4      ;_uu_ 4       pVP                  RRV4       RRR4       V P                  R\        XP                  4      4       \        P                  ! R4       VP!                  4        \"        P$                  P'                  4       pV P)                  RV4       R#   + '       g   i     L; i)	wazzuuup
linetwozhi
X-INJECTEDr   	hi@me.com
you@me.comNz2prohibited newline characters: ehlo hi\nX-INJECTEDr   z
X-INJECTED)r.   r   rC   r0   r   r   r   r   rc   rd   r!  r  r  r  r   r   r   r   r   rt   assertNotIn)r   r&  r   r	  debugouts   &    r   $test_issue43124_escape_localhostname9DebuggingServerTests.test_issue43124_escape_localhostname  s      ||D$))<L$+$<$<>

#z**cMM+|Q7 +A	

 	

4		$$--/x0 +*s   1D

D	c                   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       VP                  RRV4       V P                  \        4      ;_uu_ 4       pVP                  RRR.4       RRR4       \        XP                  4      pV P                  RV4       V P                  R	V4       \        P                   ! R
4       VP#                  4        \$        P&                  P)                  4       pV P+                  RV4       V P+                  RV4       V P+                  RV4       V P+                  RV4       R#   + '       g   i     L; i)r3  r   r   r4  r5  zX-OPTION
X-INJECTED-1zX-OPTION2
X-INJECTED-2Nr  z.X-OPTION\nX-INJECTED-1 X-OPTION2\nX-INJECTED-2r   zX-OPTIONz	X-OPTION2zX-INJECTED-1zX-INJECTED-2)r.   r   rC   r0   r   r   r   r   r!  rc   rd   mailr  r  r  r   r   r   r   r   rt   r6  )r   r&  r   r	  msgr7  s   &     r   test_issue43124_escape_options3DebuggingServerTests.test_issue43124_escape_options  s     ||$))K,,. 	

#k<3z**cIIk$<>W#XY +#-- 5s;H#N

4		$$--/X.h/22 +*s   E((E8	c                   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       VP                  RRV4       \        P                  ! R4       VP                  4        V P                  P                  4        V P                  P                  4        V P                   P#                  4        \$        : V: R\&        : 2pV P)                  V P                   P+                  4       V4       \,        P.                  P+                  4       p\0        P2                  ! R\0        P4                  4      pV P7                  WE4       R# )	r  r   r   z<>r  r   r  z^sender: <>$N)r.   r   rC   r0   r   r   r   r   r!  r   r   r   r   r   r   r   r   r"  r#  r$  r7   rt   r   r   rp   rq   rr   rs   )r   r&  r   r'  r7  senders   &     r   testSendNullSender'DebuggingServerTests.testSendNullSender  s    ||D$))K$+$<$<>

#dGQ'

4		 )1g6--/9$$--/NBLL9*r   c                   \         P                  P                  P                  R 4      p\        P
                  ! \        V P                  R\        P                  R7      pV P                  VP                  4       VP                  VRRR7       \        P                  ! R4       VP                  4        V P                   P#                  4        V P$                  P'                  4        V P(                  P+                  4        V P-                  4       pVR \.        : VP1                  4       : R\2        : 2pV P5                  W44       R	# )
r  r   r   r  r  	from_addrto_addrsr   X-Peerr  N)emailmimetextMIMETextr.   r   rC   r0   r   r   r   r   send_messager   r   r   r   r   r   r   r   r"  r   r#  	as_stringr$  r7   )r   r&  r   r   r'  s   &    r   testSendMessage$DebuggingServerTests.testSendMessage  s    JJOO$$%56||D$))K$+$<$<>

#!v@

4		
 335hK )1;;='B.r   c                4   \         P                  P                  P                  R 4      pRVR&   RVR&   RVR&   RVR&   \        P
                  ! \        V P                  R	\        P                  R
7      pV P                  VP                  4       VP                  V4       \        P                  ! R4       VP                  4        V P!                  VR,          R4       V P"                  P%                  4        V P&                  P)                  4        V P*                  P-                  4        V P/                  4       pVR VR \0        : VP3                  4       : R\4        : 2pV P!                  W44       \6        P8                  P;                  4       p\<        P>                  ! R\<        P@                  4      pV PC                  WV4       R FH  p\<        P>                  ! RPE                  V4      \<        P@                  4      pV PC                  WX4       KJ  	  R# )r  foo@bar.comFromr  ToSally, FredCC?John Root <root@localhost>, "Dinsdale" <warped@silly.walks.com>Bccr   r   r   rG  r  ^sender: foo@bar.com$^recips: .*'{}'.*$N)r  r  Fredzroot@localhostzwarped@silly.walks.com)#rH  rI  rJ  rK  r.   r   rC   r0   r   r   r   r   rL  r   r   r   r7   r   r   r   r   r   r"  r   r#  rM  r$  r   r   rt   rp   rq   rr   rs   format	r   r&  r   r   r'  r7  r@  r#   to_addrs	   &        r   testSendMessageWithAddresses1DebuggingServerTests.testSendMessageWithAddresses  s   JJOO$$%56!&	$$T%||D$))K$+$<$<>

#!

4		5 $? 	@ 	335hKeH )1;;='B.$$--/3R\\B*/Djj!6!=!=d!C!#/GX/	/r   c                   \         P                  P                  P                  R 4      pRVR&   RVR&   \        P
                  ! \        V P                  R\        P                  R7      pV P                  VP                  4       VP                  V4       \        P                  ! R4       VP                  4        V P                   P#                  4        V P$                  P'                  4        V P(                  P+                  4        V P-                  4       pVR \.        : VP1                  4       : R	\2        : 2pV P5                  W44       \6        P8                  P;                  4       p\<        P>                  ! R
\<        P@                  4      pV PC                  WV4       R FH  p\<        P>                  ! RPE                  V4      \<        P@                  4      pV PC                  WX4       KJ  	  R# )r  rQ  rR  John, DinsdalerS  r   r   r   rG  r  rX  rY  Nr  Dinsdale#rH  rI  rJ  rK  r.   r   rC   r0   r   r   r   r   rL  r   r   r   r   r   r   r   r   r"  r   r#  rM  r$  r7   r   r   rt   rp   rq   rr   rs   r[  r\  s	   &        r    testSendMessageWithSomeAddresses5DebuggingServerTests.testSendMessageWithSomeAddresses(  sX   JJOO$$%56!&	"$||D$))K$+$<$<>

#!

4		335hK )1;;='B.$$--/3R\\B*(Djj!6!=!=d!C!#/GX/ )r   c                Z   \         P                  P                  P                  R 4      pRVR&   RVR&   \        P
                  ! \        V P                  R\        P                  R7      pV P                  VP                  4       VP                  VRRR	7       \        P                  ! R
4       VP                  4        V P                   P#                  4        V P$                  P'                  4        V P(                  P+                  4        V P-                  4       pVR \.        : VP1                  4       : R\2        : 2pV P5                  W44       \6        P8                  P;                  4       p\<        P>                  ! R\<        P@                  4      pV PC                  WV4       R FH  p\<        P>                  ! RPE                  V4      \<        P@                  4      pV PG                  WX4       KJ  	  \<        P>                  ! R\<        P@                  4      p	V PC                  WY4       R# )r  rQ  rR  ra  rS  r   r   zjoe@example.comzfoo@example.netrD  r   rG  r  z^sender: joe@example.com$rY  z^recips: .*'foo@example.net'.*$Nrb  )$rH  rI  rJ  rK  r.   r   rC   r0   r   r   r   r   rL  r   r   r   r   r   r   r   r   r"  r   r#  rM  r$  r7   r   r   rt   rp   rq   rr   rs   r[  assertNotRegex)
r   r&  r   r   r'  r7  r@  r#   r]  recips
   &         r   %testSendMessageWithSpecifiedAddresses:DebuggingServerTests.testSendMessageWithSpecifiedAddressesE  s   JJOO$$%56!&	"$||D$))K$+$<$<>

#!'8CTU

4		335hK )1;;='B.$$--/7F*(Djj!6!=!=d!C!#/G2 ) 

=r||L)r   c                   \         P                  P                  P                  R 4      pRVR&   RVR&   RVR&   \        P
                  ! \        V P                  R\        P                  R7      pV P                  VP                  4       VP                  V4       \        P                  ! R	4       VP                  4        V P                   P#                  4        V P$                  P'                  4        V P(                  P+                  4        V P-                  4       pVR
 \.        : VP1                  4       : R\2        : 2pV P5                  W44       \6        P8                  P;                  4       p\<        P>                  ! R\<        P@                  4      pV PC                  WV4       R FH  p\<        P>                  ! RPE                  V4      \<        P@                  4      pV PC                  WX4       KJ  	  R# )r  zBernard, BiancarR  z#the_rescuers@Rescue-Aid-Society.comSenderra  rS  r   r   r   rG  r  z-^sender: the_rescuers@Rescue-Aid-Society.com$rY  Nrb  rd  r\  s	   &        r   testSendMessageWithMultipleFrom4DebuggingServerTests.testSendMessageWithMultipleFromd  sa   JJOO$$%56%&	;("$||D$))K$+$<$<>

#!

4		335hK )1;;='B.$$--/KR\\Z*(Djj!6!=!=d!C!#/GX/ )r   c                0   \         P                  P                  P                  R 4      pRVR&   RVR&   RVR&   RVR&   R	VR
&   RVR&   RVR&   RVR&   \        P
                  ! \        V P                  R\        P                  R7      pV P                  VP                  4       VP                  V4       \        P                  ! R4       VP                  4        V P                   P#                  4        V P$                  P'                  4        V P(                  P+                  4        VR VR V P-                  4       pVR \.        : VP1                  4       : R\2        : 2pV P5                  W44       \6        P8                  P;                  4       p\<        P>                  ! R\<        P@                  4      pV PC                  WV4       R FH  p\<        P>                  ! RPE                  V4      \<        P@                  4      pV PC                  WX4       KJ  	  R# )r  rQ  rR  r  rS  rT  rU  rV  rW  Thu, 1 Jan 1970 17:42:00 +0000Resent-Dateholy@grail.netResent-From&Martha <my_mom@great.cooker.com>, Jeff	Resent-Todoe@losthope.net
Resent-Bccr   r   r   rG  r  z^sender: holy@grail.net$rY  N)zmy_mom@great.cooker.comJeffrw  rd  r\  s	   &        r   testSendMessageResent*DebuggingServerTests.testSendMessageResent  s   JJOO$$%56!&	$$T%;-+-A+,,||D$))K$+$<$<>

#!

4		eHlO335hK )1;;='B.$$--/6E*KDjj!6!=!=d!C!#/GX/ Lr   c                   \         P                  P                  P                  R 4      pRVR&   RVR&   RVR&   RVR&   R	VR
&   RVR&   RVR&   RVR&   RVR
&   RVR&   RVR&   \        P
                  ! \        V P                  R\        P                  R7      pV P                  VP                  4       V P                  \        4      ;_uu_ 4        VP                  V4       RRR4       VP                  4        R#   + '       g   i     L"; i)r  rQ  rR  r  rS  rT  rU  rV  rW  rq  rr  rs  rt  ru  rv  rw  rx  zThu, 2 Jan 1970 17:42:00 +0000r   r   N)rH  rI  rJ  rK  r.   r   rC   r0   r   r   r   r   rc   rd   rL  r   r&  r   s   &  r   #testSendMessageMultipleResentRaises8DebuggingServerTests.testSendMessageMultipleResentRaises  s    JJOO$$%56!&	$$T%;-+-A+,,;-)+C-||D$))K$+$<$<>

#z**a  +

 +*s   C;;D	)r   r   r   r   r   r0   r   r!   r   r   r   )!r}   r~   r   r   maxDiffr1   r4   r   r   rI   r   r   r   r  r
  r  r  r  r(  r-  r0  r8  r=  rA  rN  r^  re  rj  rn  rz  r~  r   r   r   s   @r   r   r      s     G6= A
 	:&: :"1(32+&/,"0H0:*>0<#0J r   r   c                   2   a  ] tR tRt o R tR tR tRtV tR# )NonConnectingTestsi  c                    \         P                  ! 4       pV P                  \         P                  VP                  4       V P                  \         P                  VP
                  R 4       R# )ztest msgN)r.   r   rc   SMTPServerDisconnectedr   r   r   s   & r   testNotConnected#NonConnectingTests.testNotConnected  sH    
 ||~'88$))D'88))Z	1r   c                    V P                  \        \        P                  R R4       V P                  \        \        P                  R4       R# )r   boguszlocalhost:bogusN)rc   r   r.   r   r   s   &r   testNonnumericPort%NonConnectingTests.testNonnumericPort  s6    '7<<%w	0'7<<+	-r   c                    \         P                  ! 4       ;_uu_ 4       pV P                  VP                  4       R R R 4       R #   + '       g   i     R # ; ir   )r.   r   rU   rX   r   s   & r   testSockAttributeExists*NonConnectingTests.testSockAttributeExists  s/     \\^^tdii( ^^^s   AA	r   N)	r}   r~   r   r   r  r  r  r   r   r   s   @r   r  r    s     1-) )r   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )DefaultArgumentsTestsi  c                   \        4       V n        R V P                  R&   \        P                  ! 4       V n        \        RR7      V P                  n        \        4       \        4       uV P                  n        V P                  n        R# )   Páolo <főo@bar.com>rR  )return_valueN)   OK)	r   r<  r.   r   r   r   r   has_extnr!  r   s   &r   r1   DefaultArgumentsTests.setUp  sT    >2LLN	;7		15.		DII.r   c                   RpV P                   P                  V P                  4       V P                   P                  V P                  4       V P                  V P                   P                  P
                  ^ ,          ^ ,          ^,          V4       V P                  V P                   P                  P
                  ^,          ^ ,          ^,          V4       R# )SMTPUTF8N)r  BODY=8BITMIMEr   rL  r<  r7   r!  call_args_list)r   expected_mail_optionss   & r   rN  %DefaultArgumentsTests.testSendMessage  s     =		txx(		txx(++::1=a@C.	0++::1=a@C.	0r   c                   R .pRpV P                   P                  V P                  RRV4       V P                  VR .4       V P                  V P                   P                  P
                  ^ ,          ^ ,          ^,          V4       R# )STARTTLSN)r  r  r  r  )r   mail_optionsr  s   &  r   testSendMessageWithMailOptions4DefaultArgumentsTests.testSendMessageWithMailOptions  so    "| I		txxt\B
|4++::1=a@C.	0r   )r<  r   N)	r}   r~   r   r   r1   rN  r  r   r   r   s   @r   r  r    s     @00 0r   r  c                   2   a  ] tR tRt o R tR tR tRtV tR# )BadHELOServerTestsi  c                    \         \        n        \         P                  ! R 4       \        P
                  V n        \        P                  ! 4       V n	        V P                  \        n        ^V n
        R# )s   199 no hello for you!N)r   r.   r/   rA   r   r   r   r   r   r   r0   r   s   &r   r1   BadHELOServerTests.setUp  sB    $78**kkm[[
	r   c                N    \         \        n         V P                  \        n        R # r   )r/   r.   r   r   r   r   s   &r   r4   BadHELOServerTests.tearDown  s    __
r   c                    V P                  \        P                  \        P                  \        V P
                  R ^4       R# r   N)rc   r.   SMTPConnectErrorr   rC   r0   r   s   &r   testFailingHELO"BadHELOServerTests.testFailingHELO   s+    '22GLL $))[!	=r   )r   r   r0   N)	r}   r~   r   r   r1   r4   r  r   r   r   s   @r   r  r    s     %= =r   r  c                      a  ] tR tRt o RR]P
                  ,          ^,          ,           R,           tR tR tR t	Rt
V tR	# )
TooLongLineTestsi  s   250 OK   .   
c                
   \         P                  ! 4       V n        \        P                  V n        \        P                  ! 4       V n        V P                  \        n        \        P                  ! 4       V n        \        P                  ! \        P                  \        P                  4      V n        V P                  P!                  ^4       \"        P$                  ! V P                  4      V n        V P                  V P(                  V P                  3p\        P*                  ! \,        VR7      V n        V P.                  P1                  4        V P                  P3                  4        V P                  P5                  4        R# )   r   N)r	   r   r   r   r   r   r   r   r   r   r   r   r/   AF_INETSOCK_STREAMrX   
settimeoutr   	bind_portr0   respdatar   r)   r   r   r   r   )r   servargss   & r   r1   TooLongLineTests.setUp  s    *::<**kkm[[
??$MM&..&2D2DE			R !++DII6	HHdmmTYY7&&f8Dr   c                   V P                   P                  4        V P                  \        n        \
        P                  ! V P                  4       V =V P                  4        \
        P                  ! V P                  !   R # r   )r   r   r   r   r   r	   r   r   r   r   r   r   s   &r   r4   TooLongLineTests.tearDown  sM    __
$$T[[1K**DOO<r   c                    V P                  \        P                  \        P                  \        V P
                  R ^4       R# r  )rc   r.   SMTPResponseExceptionr   rC   r0   r   s   &r   testLineTooLong TooLongLineTests.testLineTooLong   s+    '77		;	;r   )r   r   r   r0   rX   r   r   N)r}   r~   r   r   r.   _MAXLINEr  r1   r4   r  r   r   r   s   @r   r  r    s8     D7#3#33a785@H =; ;r   r  Mr.A@somewhere.comzJohn AzMs.B@xn--fo-fka.comzSally BzMrs.C@somewhereesle.comzRuth Cz<PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=zlist-1zlist-2c                       ] tR tRtRtR# )ResponseExceptioni2  r   N)r}   r~   r   r   r   r   r   r   r  r  2  s    Dr   r  c                      a a ] tR tRt oRtRtRtRt^ t^ t	^ t
^ctRtV 3R ltV 3R ltR tR tR tRR ltRR	 ltRR
 ltRR ltR tR tR tV 3R ltV 3R ltV 3R ltV 3R ltV 3R ltR tRtVt V ;t!# )SimSMTPChanneli3  Nc                   < R P                  V Uu. uF  pRP                  V4      NK  	  up4      V n        . V n        \        \
        V `  ! V/ VB  R# u upi ) z	250-{0}
N)joinr[  _extrafeaturesall_received_linesr   r  __init__)r   extra_featuresr   kwxr   s   &&*, r   r  SimSMTPChannel.__init__?  sT     gg/=?~!m""1%~?A"$nd,d9b9 @s   Ac                  < V P                   V P                  8X  df   V P                  P                  V P                  4      p\        R \        V4      \        P                  R7       . V n         V P                  V4       R# V P                  P!                  V P                  4       \"        SV `I  4        R#   \         dI   pT P                  T n         T P                  TP                  : RTP                  : 24        Rp?R# Rp?ii ; i)zData:)file N)
smtp_stateAUTH_emptystringr  received_linesprintreprr   r   auth_objectr  COMMANDpush	smtp_code
smtp_errorr  appendr   found_terminator)r   liner'   r   s   &  r   r  SimSMTPChannel.found_terminatorF  s    ??dii'$$))$*=*=>D'4:E,=,=>"$DA  & &&t':':; " % A"&,,		Q[[!,,?@@As   /B7 7D
=DD
c                   V P                   '       g   V P                  R 4       R# V P                  '       d   RV P                  9  d   V P                  R4       R# V P                  e   V P                  R4       R# VP                  4       p\        V4      R
9  d   V P                  R4       R# RV^ ,          P                  4       P                  RR4      ,          p \        W4      V n
        T P                  T n        T P                  \        T4      ^8X  d   T^,          4       R# R4       R#   \         d%    T P                  R	P                  T4      4        R# i ; i)z503 Error: send EHLO firstNr  z(500 Error: command "AUTH" not recognizedz3503 Bad sequence of commands: already authenticatedz/501 Syntax: AUTH <mechanism> [initial-response]z_auth_%s-_zQ504 Command parameter not implemented: unsupported  authentication mechanism {!r})   r   )seen_greetingr  extended_smtpr  authenticated_usersplitlenlowerreplacegetattrr  AttributeErrorr[  r  r  )r   argr   auth_object_names   &&  r   	smtp_AUTHSimSMTPChannel.smtp_AUTHU  s    !!!II23!!!V43F3F%FII@A"".IIEGyy{t9F"IIGH%Q(?(?S(II	&t>D
 ))CINa==  	II 77=v>N7OQ	s   D2 2+E! E!c                    V'       d   Wn         V P                  R 4       MV P                  R4       V P                  V n        R# )z235 Authentication Succeededz&535 Authentication credentials invalidN)r  r  r  r  )r   uservalids   &&&r   _authenticatedSimSMTPChannel._authenticatedn  s0    &*#II45II>?,,r   c                j    \         P                  ! VP                  R 4      4      P                  R4      # )r+  utf-8)base64decodebytesencoder,  )r   strings   &&r   _decode_base64SimSMTPChannel._decode_base64v  s'    !!&--"89@@IIr   c                0   Vf   V P                  R4       R # V P                  V4      p VP                  R4      Ev r4pT P                  YE\        ^,          8H  4       R #   \         d,   pT P                  RP	                  Y&4      4        R p?R # R p?ii ; i)Nz334  =535 Splitting response {!r} into user and password failed: {})r  r  r  rd   r[  r  sim_auth)r   r  logpassr  r  passwordr'   s   &&     r   _auth_plainSimSMTPChannel._auth_plainy  s    ;IIf))#.G%,]]4%8"(
 (1+&=>	  		 ((.w(:<s   A B* BBc                $   Vf   V P                  R4       R # \        V R4      '       g*   V P                  V4      V n        V P                  R4       R # V P                  V4      pV P	                  V P                  V\
        ^,          8H  4       V =R # )Nz334 VXNlcm5hbWU6_auth_login_userz334 UGFzc3dvcmQ6)r  r   r  r
  r  r  )r   r  r  s   && r   _auth_loginSimSMTPChannel._auth_login  sw    ;II()122$($7$7$<D!II()**3/H 5 5x8A;7NO%r   c                (    V P                  R 4       R# )z334 QnVHZ1liVWdHeQ==N)r  r   r  s   &&r   _auth_buggySimSMTPChannel._auth_buggy  s     			()r   c                N   Vf'   V P                  RP                  \        4      4       R # V P                  V4      p VP	                  4       w  r4\        ^,          P                  R4      pT P                  \        4      P                  R4      p \        P                  ! YgR4      P                  4       pT P                  Y4T8H  4       R #   \
         d,   pT P                  RP                  Y%4      4        R p?R # R p?ii ; i  \
         d    T P                  R4        R # i ; i)Nz334 {}r  r+  md5z504 CRAM-MD5 is not supported)r  r[  sim_cram_md5_challenger  r  rd   r  r  hmacHMAC	hexdigestr  )	r   r  r  r  hashed_passr'   pwdr<  valid_hashed_passs	   &&       r   _auth_cram_md5SimSMTPChannel._auth_cram_md5  s    ;IIhoo&<=>))#.G$+MMO!
 1+$$W-C%%&<=DDWMC$(IIc$>$H$H$J! 5F&FG  		 ''-vg'9;  		9:s)   C %D D C<<DD$#D$c                x    R pW P                   ,           R,           pV P                  V4       Wn        RV n        R# )zH250-testhost
250-EXPN
250-SIZE 20000000
250-STARTTLS
250-DELIVERBY
z250 HELPTN)r  r  r  r  )r   r  resps   && r   	smtp_EHLOSimSMTPChannel.smtp_EHLO  s7    $
 )))J6		$ !r   c                    V\         9   d;   V P                  R \         V,          : R\        P                  ! V4      : 24       R# V P                  RV,          4       R# )250 r  z550 No such user: %sN)	sim_usersr  r.   	quoteaddrr  s   &&r   	smtp_VRFYSimSMTPChannel.smtp_VRFY  s>    )IIYs^^W5F5Fs5KLMII,s23r   c                   VP                  4       pV\        9   d   \        V,          p\        V4       F|  w  rE\        P                  ! V4      pV\        V4      ^,
          8  d'   V P                  R\        V,          : RV: 24       KX  V P                  R\        V,          : RV: 24       K~  	  R# V P                  R4       R# )r  z250-r  r!  z550 No access for you!N)r  	sim_lists	enumerater.   r#  r  r  r"  )r   r  	list_name	user_listr$   
user_emailquoted_addrs   &&     r   	smtp_EXPNSimSMTPChannel.smtp_EXPN  s    IIK		!!),I!*9!5%//
;s9~))IIYz-B-BKPQIIYz-B-BKPQ "6 II./r   c                   < V P                   f   \        \        V `  V4       R # V P	                  V P                   4       V P                  4        R # r   )quit_responser   r  	smtp_QUITr  close_when_doner   r  r   s   &&r   r1  SimSMTPChannel.smtp_QUIT  s<    %.$1#6IId(()  "r   c                   < V P                   f   \        SV `	  V4       R # V P                  V P                   4       V P                  '       d   V P                  4        R # R # r   )mail_responser   	smtp_MAILr  
disconnectr2  r3  s   &&r   r7  SimSMTPChannel.smtp_MAIL  sH    %Gc"IId(()$$& r   c                   < V P                   f   \        SV `	  V4       R # V ;P                  ^,          un        V P	                  V P                   V P                  ^,
          ,          4       R # r   )rcpt_responser   	smtp_RCPT
rcpt_countr  r3  s   &&r   r<  SimSMTPChannel.smtp_RCPT  sM    %Gc"1		$$$T__Q%678r   c                X   < V ;P                   ^,          un         \        SV `	  V4       R# )r  N)
rset_countr   	smtp_RSETr3  s   &&r   rA  SimSMTPChannel.smtp_RSET  s    1#r   c                |   < V P                   f   \        SV `	  V4       R # V P                  V P                   4       R # r   )data_responser   	smtp_DATAr  r3  s   &&r   rE  SimSMTPChannel.smtp_DATA  s.    %Gc"IId(()r   c                    h r   r   r   s   &r   handle_errorSimSMTPChannel.handle_error      r   )	r
  r  r  r  r  r  r  r  r  r   )"r}   r~   r   r   r0  r6  r;  rD  r=  r@  r8  r  r  r  r  r  r  r  r  r  r  r  r  r$  r-  r1  r7  r<  rA  rE  rH  r   r   r   r   s   @@r   r  r  3  s     MMMMJJJD:#>2'J?&*
H*	"40#'9* r   r  c                   B   a  ] tR tRt o ]tR tR tR tR t	R t
RtV tR# )	SimSMTPServeri  c                j    . V n         / V n        \        P                  P                  ! V .VO5/ VB  R # r   )_extra_features
_addressesr   
SMTPServerr  r   r   r  s   &*,r   r  SimSMTPServer.__init__  s/    !!!$444r   c                b    V P                  V P                  WVV P                  R 7      V n        R# )r   N)channel_classrN  _decode_data_SMTPchannelr   r"   r#   s   &&&r   handle_acceptedSimSMTPServer.handle_accepted  s0     ..  $d)) / +r   c                >    W P                   R &   W0P                   R&   R# )fromtosN)rO  )r   peermailfromrcpttosdatas   &&&&&r   process_messageSimSMTPServer.process_message  s    "*!(r   c                <    V P                   P                  V4       R # r   )rN  r  )r   features   &&r   add_featureSimSMTPServer.add_feature  s    ##G,r   c                    h r   r   r   s   &r   rH  SimSMTPServer.handle_error  rJ  r   )rV  rO  rN  N)r}   r~   r   r   r  rT  r  rX  ra  re  rH  r   r   r   s   @r   rL  rL    s(     "M5
+
)- r   rL  c                     a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR t]P                   ! RRR7      R 4       t]P&                  ! R4      ]P&                  ! RR4      R 4       4       t]P&                  ! RR4      R 4       t]P                   ! RRR7      R 4       tR tR tR tR tR tR tR tR tR tR  t R! t!R" t"R# t#R$t$V t%R%# )&SMTPSimTestsi  c                   \         P                  ! 4       V n        \        P                  V n        \        P                  \        n        \        P                  ! 4       V n	        \        P                  ! 4       V n
        \        \        ^ 3RRR7      V n        V P                  P                  P                  4       ^,          V n        V P                  V P                  V P                  3p\        P                   ! \"        VR7      V n        V P$                  P'                  4        V P                  P)                  4        V P                  P+                  4        R# r   Tr   r   Nr   )r	   r   r   r/   r   r   r   r   r   r   r   rL  rC   r!   r   r0   r   r   r   r   r   r   r   s   & r   r1   SMTPSimTests.setUp  s    *::<"NN$,,!)#//+!4)_$O	II$$00215	YYt?	&&.>YO 	r   c                8   V P                   \        n        V P                  P	                  4        V P
                  P                  4        \        P                  ! V P                  4       V =	V P                  4        \        P                  ! V P                  !   R # r   r   r/   r   r   r   r   r   r	   r   r   r   r   r   r   s   &r   r4   SMTPSimTests.tearDown  b    **$$T[[1K**DOO<r   c                    \         P                  ! \        V P                  R \        P
                  R7      pVP                  4        R# r   r   r   s   & r   r   SMTPSimTests.testBasic*  r   r   c           
        \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  / 4       RRRRRRRRRR/pVP                  4        V P                  VP                  V4       V F#  pV P                  VP                  V4      4       K%  	  V P                  VP                  R	4      4       VP                  4        R
# )r   r   expnr  size20000000starttls	deliverbyr  zunsupported-featureN)r.   r   rC   r0   r   r   r7   esmtp_featuresr   
assertTruer  assertFalser   )r   r   expected_featuresks   &   r   testEHLOSMTPSimTests.testEHLO0  s    ||D$))K$+$<$<> 	,,b1 $B#Z'("#R	 			,,.?@"AOODMM!,- #'<=>		r   c           	        \         P                  ! \        V P                  R \        P
                  R7      p\        P                  4        FO  w  r#^\        V: R\         P                  ! V4      : 2R4      3pV P                  VP                  V4      V4       KQ  	  RpRRV,          P                  R4      3pV P                  VP                  V4      V4       VP                  4        R# )r   r   r  r+  r  &  zNo such user: %sN)r.   r   rC   r0   r   r   r"  itemsbytesr#  r7   r  r  r   )r   r   	addr_specnameexpected_knownuexpected_unknowns   &      r   r  SMTPSimTests.testVRFYF  s    ||D$))K$+$<$<>  )0OI!5*.0A0A)0L*N)0$2 3N TYYy1>B	  1 !"4q"8!@!@!IJ1'78		r   c           	        \         P                  ! \        V P                  R \        P
                  R7      p\        P                  4        F  w  r#. pV F:  pVP                  \        V,          : R\         P                  ! V4      : 24       K<  	  ^\        RP                  V4      R4      3pV P                  VP                  V4      V4       K  	  RpRpV P                  VP                  V4      V4       VP                  4        R# )r   r   r  r  r+  zPSU-Members-ListN)r  s   No access for you!)r.   r   rC   r0   r   r   r'  r  r  r"  r#  r  r  r7   ru  r   )	r   r   listnamemembersusersr&  r  r  r  s	   &        r   testEXPNSMTPSimTests.testEXPNU  s    ||D$))K$+$<$<> "+!2HE	!g6G6G6JKL !55)97#CDNTYYx0.A "3 71'78		r   c                <   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pVP                  \        ^ ,          \        ^,          4      pV P                  VR4       VP                  4        R# )
AUTH PLAINr   r   N   s   Authentication Succeededr!   re  r.   r   rC   r0   r   r   loginr  r7   r   r   r   r  s   &  r   testAUTH_PLAINSMTPSimTests.testAUTH_PLAINe  g    		l+||D$))K$+$<$<>zz(1+x{3AB

r   c                <   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pVP                  \        ^ ,          \        ^,          4      pV P                  VR4       VP                  4        R# )
AUTH LOGINr   r   Nr  r  r  s   &  r   testAUTH_LOGINSMTPSimTests.testAUTH_LOGINm  r  r   c                   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      ;_uu_ 4       p\        w  Vn	        Vn
        VP                  R4       VP                  RVP                  RR7      pV P                  VR4       RRR4       R#   + '       g   i     R# ; i)	r  r   r   test_auth_loginLOGINTinitial_response_okNr  r!   re  r.   r   rC   r0   r   r   r  r  r  r   auth
auth_loginr7   r  s   &  r   "testAUTH_LOGIN_initial_response_ok/SMTPSimTests.testAUTH_LOGIN_initial_response_oku  s    		l+\\$		+")":":< <?C'/$DIt}II'(99Wdoo49PDT#EF< < < <   AB99C
	c                   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      ;_uu_ 4       p\        w  Vn	        Vn
        VP                  R4       VP                  RVP                  RR7      pV P                  VR4       RRR4       R#   + '       g   i     R# ; i)	r  r   r   r  r  Fr  Nr  r  r  s   &  r   %testAUTH_LOGIN_initial_response_notok2SMTPSimTests.testAUTH_LOGIN_initial_response_notok~  s    		l+\\$		+")":":< <?C'/$DIt}II'(99Wdoo59QDT#EF< < < <r  c                  a  S P                   P                  R 4       R
V 3R llp\        P                  ! \        S P
                  R\        P                  R7      p \        w  Vn	        Vn
        VP                  R4       RpS P                  \        P                  V4      ;_uu_ 4       pVP                  RVRR	7       RRR4       VP                  4        R#   + '       g   i     L"; i  TP                  4        i ; i)z
AUTH BUGGYNc                 ,   < SP                  R V 4       R# )s
   BuGgYbUgGyr  )r7   )	challenger   s   &r   
auth_buggy/SMTPSimTests.testAUTH_BUGGY.<locals>.auth_buggy  s    ]I6r   r   r   test_auth_buggyz&^Server AUTH mechanism infinite loop.*BUGGYFr  r   )r!   re  r.   r   rC   r0   r   r   r  r  r  r   assertRaisesRegexSMTPExceptionr  r   )r   r  r   expectcms   f    r   testAUTH_BUGGYSMTPSimTests.testAUTH_BUGGY  s    		l+	 ||$))K,,
	'/$DIt}II'(>F''(=(=vFF"		':5	I G JJL GF JJLs%   AC, *C?C, C)	$C, ,C>r  T)opensslc                <   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pVP                  \        ^ ,          \        ^,          4      pV P                  VR4       VP                  4        R# )AUTH CRAM-MD5r   r   Nr  r  r  s   &  r   testAUTH_CRAM_MD5SMTPSimTests.testAUTH_CRAM_MD5  sg    		o.||D$))K$+$<$<>zz(1+x{3AB

r   z	hmac.HMACzsmtplib._have_cram_md5_supportFc                   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pV P                  VP                  4       \        P                  ! R4      pV P                  \        P                  V4      ;_uu_ 4        VP                  \        ^ ,          \        ^,          4       RRR4       VP!                  4        R#   + '       g   i     L"; i)r  r   r   z(No suitable authentication method found.N)r!   re  r.   r   rC   r0   r   r   r   r   rp   escaper  r  r  r  assert_not_called)r   hmac_constructorr   r<  s   &&  r   testAUTH_CRAM_MD5_blocked&SMTPSimTests.testAUTH_CRAM_MD5_blocked  s     			o.||D$))K$+$<$<>

#iiBC##G$9$93??JJx{HQK0 @**, @?s   +)C..C>	c           	        V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pV P                  VP                  4       \        P                  P                  VR4      ;_uu_ 4       p\        P                  P                  VRVP                  R7      ;_uu_ 4       pVP                  \        ^ ,          \        ^,          4      pRRR4       RRR4       XP!                  4        XP#                  4        V P%                  XR4       R#   + '       g   i     LL; i  + '       g   i     LW; i)zAUTH CRAM-MD5 PLAINr   r   auth_cram_md5
auth_plain)wrapsNr  )r!   re  r.   r   rC   r0   r   r   r   r   mockpatchobjectr  r  r  assert_called_oncer  r7   )r   r   smtp_auth_cram_md5smtp_auth_plainr  s   &    r   &testAUTH_CRAM_MD5_blocked_and_fallback3SMTPSimTests.testAUTH_CRAM_MD5_blocked_and_fallback  s     			34||D$))K$+$<$<>

#JJdO448JJJl$//    ::hqk8A;7D	 5 	**,,,.AB  54s$   5E

)D7	3E
7EE

E	c                <   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pVP                  \        ^ ,          \        ^,          4      pV P                  VR4       VP                  4        R# )zAUTH BOGUS PLAIN LOGIN CRAM-MD5r   r   Nr  r  r  s   &  r   testAUTH_multipleSMTPSimTests.testAUTH_multiple  sj     			?@||D$))K$+$<$<>zz(1+x{3AB

r   c           
        R R0p \         P                  ! 4        VP                  R4       V F-  pV P                  P                  RP                  V4      4       K/  	  V F  pV P                  VR7      ;_uu_ 4        \        P                  ! \        V P                  R\        P                  R7      pVP                  R4       \        ^ ,          \        ^,          uVn        Vn        RVP%                  4       P'                  R	R
4      ,           pVP)                  V\+        W44      4      pV P-                  VR4       VP/                  4        RRR4       K  	  R#   \         d     EL?i ; i  + '       g   i     EK   ; i)PLAINr  zCRAM-MD5zAUTH {})	mechanismr   r   fooauth_r  r  Nr  )hashlibr  addrd   r!   re  r[  subTestr.   r   rC   r0   r   r   r   r  r  r  r  r  r  r  r7   r   )r   	supportedr  r   methodr  s   &     r   test_auth_functionSMTPSimTests.test_auth_function  s(   g&		&KKM MM*%"III!!)"2"29"=> #"I	22||D$))3>,3,D,DF 		% +3A;(	4= 9??#4#<#<S##FFyyGD,AB  'IJ

 32 #  		 322s   E >CE/E,+E,/Fc                :   \         P                  ! \        V P                  R \        P
                  R7      pVP                  4       w  r#V P                  V^4       V P                  RVP                  4       VP                  4        V P                  RVP                  4       VP                  \        V P                  4       V P                  RVP                  4       VP                  4        V P                  RVP                  4       VP                  4        R# )r   r   rv  N)r.   r   rC   r0   r   r   r   r7   r  rz  r   r6  ro   ehlo_or_helo_if_neededr   r   codemessages   &   r   test_quit_resets_greeting&SMTPSimTests.test_quit_resets_greeting  s    ||D$))+6$+$<$<> 		s#fd112		!4!45T499%!4!45##%fd112		r   c                >   \         P                  ! \        V P                  4      ;_uu_ 4       pVP	                  4       w  r#V P                  V^4       RRR4       V P                  \         P                  XP                  R4       \         P                  ! \        V P                  4      ;_uu_ 4       pVP                  4        RRR4       V P                  \         P                  VP                  R4       R#   + '       g   i     L; i  + '       g   i     LP; i)r   Ns   foo)
r.   r   rC   r0   r   r7   rc   r  r   r   r  s   &   r   test_with_statement SMTPSimTests.test_with_statement  s    \\$		**d IIKMDT3' + 	'88$))VL\\$		**dJJL +'88$))VL +* +*s   %C93D9D		D	c           	        V P                  \        P                  4      ;_uu_ 4       p\        P                  ! \        V P
                  4      ;_uu_ 4       pVP                  4        R V P                  P                  n	        RRR4       RRR4       V P                  XP                  P                  R4       V P                  VP                  P                  R4       R#   + '       g   i     Lf; i  + '       g   i     Lq; i)z421 QUIT FAILEDN  s   QUIT FAILED)rc   r.   r  r   rC   r0   r   r!   rV  r0  r7   r  r  r  )r   errorr   s   &  r    test_with_statement_QUIT_failure-SMTPSimTests.test_with_statement_QUIT_failure  s    w<<==dDII..$		7H		&&4 / > 	22C833^D	 /. >=s#   .C3,C 	C3 C0+C33D	c                   \         P                  ! \        V P                  R \        P
                  R7      pVP                  4        RV P                  P                  n	        RV P                  P                  n
        V P                  \         P                  4      ;_uu_ 4        VP                  RRR4       RRR4       V P                  VP                  4       R#   + '       g   i     L-; i)r   r   z451 Requested action abortedTr  r  test messageN)r.   r   rC   r0   r   r   r   r!   rV  r6  r8  rc   SMTPSenderRefusedr!  rU   rX   r   s   & r   test__rest_from_mail_cmd%SMTPSimTests.test__rest_from_mail_cmd	  s    ||D$))K$+$<$<>		/M		,,0		)w8899MM&'>: :$))$ :9s   $CC-	c                
   \         P                  ! \        V P                  R \        P
                  R7      pVP                  4        RV P                  P                  n	        V P                  \         P                  4      ;_uu_ 4        VP                  RRR4       RRR4       V P                  VP                  4       V P                  V P                  P                  P                   ^ 4       R#   + '       g   i     L]; i)r   r   z421 closing connectionr  r  r  N)r.   r   rC   r0   r   r   r   r!   rV  r6  rc   r  r!  rU   rX   r7   r@  r   s   & r   test_421_from_mail_cmd#SMTPSimTests.test_421_from_mail_cmd  s    ||D$))K$+$<$<>		/G		,w8899MM&'>: :$))$//::A> :9s   	C22D	c                p   \         P                  ! \        V P                  R \        P
                  R7      pVP                  4        RR.V P                  P                  n	        V P                  \         P                  4      ;_uu_ 4       pVP                  R. ROR4       RRR4       V P                  VP                  4       V P                  V P                  P                  P                   ^ 4       V P#                  XP$                  P&                  ^ ,          RR	/4       R#   + '       g   i     L; i)
r   r   z250 accepted421 closingr  Frankr  N)r  r  George)r  s   closing)r.   r   rC   r0   r   r   r   r!   rV  r;  rc   SMTPRecipientsRefusedr!  rU   rX   r7   r@  assertDictEqualr  r   )r   r   r%   s   &  r   test_421_from_rcpt_cmd#SMTPSimTests.test_421_from_rcpt_cmd  s    ||D$))K$+$<$<>		0>/N		,w<<==MM&">O >$))$//::A>Q[[--a07<M2NO	 >=s   D%%D5	c                    ! R  R\         4      pWP                  n        \        P                  ! \
        V P                  R\        P                  R7      pVP                  4        V P                  \        P                  4      ;_uu_ 4        VP                  RR.R4       RRR4       V P                  VP                  4       V P                  V P                  P                   P"                  ^ 4       R#   + '       g   i     L]; i)c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )=SMTPSimTests.test_421_from_data_cmd.<locals>.MySimSMTPChanneli*  c                   < V P                   V P                  8X  d   V P                  R 4       R# \        SV `  4        R# )r  N)r  DATAr  r   r  )r   r   s   &r   r  NSMTPSimTests.test_421_from_data_cmd.<locals>.MySimSMTPChannel.found_terminator+  s*    ??dii/IIm,G,.r   r   )r}   r~   r   r   r  r   r   r   r   s   @@r   MySimSMTPChannelr  *  s     / /r   r  r   r   zJohn@foo.orgzSally@foo.orgr  N)r  r!   rT  r.   r   rC   r0   r   r   r   rc   SMTPDataErrorr!  rU   rX   r7   rV  r=  )r   r  r   s   &  r   test_421_from_data_cmd#SMTPSimTests.test_421_from_data_cmd)  s    	/~ 	/ #3		||D$))K$+$<$<>		w4455MM.?*;^L 6$))$//::A> 65s   C77D	c           	        \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       VP                  4        V P                  VP                  4       V P                  VP                  R4      4       V P                  \         P                  VP                  RRRRR.R7       V P                  \         P                  VP                   RRR.R	7       R
# )r   r   smtputf8r  r  r  r  r  r  optionsN)r.   r   rC   r0   r   r   r   r   r   r{  
does_esmtpr|  r  rc   SMTPNotSupportedErrorr!  r;  r   s   & r   4test_smtputf8_NotSupportedError_if_no_server_supportASMTPSimTests.test_smtputf8_NotSupportedError_if_no_server_support9  s    ||$))K,,. 	

#		(z23))MMGR
.K 	 	M 	))IIv'D 	 	Fr   c                0   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       V P                  \        VP                  RRR4       V P                  \        VP                  R4       R# )r   r   Aliceu   Böbr  u   ÄliceN)r.   r   rC   r0   r   r   r   r   rc   UnicodeEncodeErrorr!  r;  r   s   & r   "test_send_unicode_without_SMTPUTF8/SMTPSimTests.test_send_unicode_without_SMTPUTF8I  sh    ||$))K,,. 	

#,dmmWfbQ,diiBr   c                   \        4       pR VR&   RVR&   RVR&   \        P                  ! \        V P                  R\
        P                  R7      pV P                  VP                  4       V P                  \        P                  4      ;_uu_ 4        VP                  V4       RRR4       R#   + '       g   i     R# ; i)	r  rR  rc  rS     Nudge nudge, wink, wink ὠ9Subjectr   r   N)r   r.   r   rC   r0   r   r   r   r   rc   r  rL  )r   r<  r   s   &  r   9test_send_message_error_on_non_ascii_addrs_if_no_smtputf8FSMTPSimTests.test_send_message_error_on_non_ascii_addrs_if_no_smtputf8Q  s     n-FD	:I||$))K,,. 	

#w<<==c" >===s   B..B?	c                <   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       \        4       p\        P                  P                  R	4      VR&   \        P                  P                  R
4      VR&   V P                  VP                  V4      / 4       V P                  V P                  P                   R,          R4       V P                  V P                  P                   R,          R.4       R# )r   r   michael@example.comrR  rene@example.comrS  r[  r\  N)u   Michaëlr  )u   Renér  )r.   r   rC   r0   r   r   r   r   r   rH  utils
formataddrr  rL  r7   r!   rO  )r   r   r  s   &  r   1test_name_field_not_included_in_envelop_addresses>SMTPSimTests.test_name_field_not_included_in_envelop_addresses_  s    ||$))K,,. 	

#.++001TU../LMT..w7<--f57LM--e47I6JKr   c                   R p\         P                  ! \        V P                  R\        P
                  R7      pV P                  VP                  4       VP                  RRV4       V P                  R.V P                  P                  P                  4       V P                  R.V P                  P                  P                  4       R# )r  r   r   r  r  zmail from:<John> size=14zrcpt to:<Sally>N)r.   r   rC   r0   r   r   r   r   r!  r  r!   rV  r  r}  s   &  r    test_lowercase_mail_from_rcpt_to-SMTPSimTests.test_lowercase_mail_from_rcpt_ton  s    ||$))K,,. 	

#fgq)12DII4J4J4]4]^()499+A+A+T+TUr   r   r0   r   r!   r   r   r   N)&r}   r~   r   r   r1   r4   r   r  r  r  r  r  r  r  r  r   requires_hashdigestr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r$  r   r   r   s   @r   rj  rj    s!    $	=, GG( ''t< = 
ZZ	ZZ0%8- 9 - 
ZZ0%8C 9C" ''t< =,ME%?	P? F C#L
V 
Vr   rj  c                   6   a  ] tR tRt o R tR tRR ltRtV tR# )SimSMTPUTF8Serveri{  c                `    R R.V n         \        P                  P                  ! V .VO5/ VB  R# )r  8BITMIMEN)rN  r   rP  r  rQ  s   &*,r   r  SimSMTPUTF8Server.__init__}  s/     !+J7!!$444r   c           	     x    V P                  V P                  WVV P                  V P                  R 7      V n        R# )r   enable_SMTPUTF8N)rT  rN  rU  r/  rV  rW  s   &&&r   rX  !SimSMTPUTF8Server.handle_accepted  s9     ..  $d)) 00 / 
r   Nc                N    Wn         W n        W0n        W@n        WPn        W`n        R # r   )	last_peerlast_mailfromlast_rcpttoslast_messagelast_mail_optionslast_rcpt_options)r   r]  r^  r_  r`  r  rcpt_optionss   &&&&&&&r   ra  !SimSMTPUTF8Server.process_message  s%    %# !-!-r   )rV  rN  r6  r3  r5  r2  r7  r4  )NN)	r}   r~   r   r   r  rX  ra  r   r   r   s   @r   r)  r)  {  s     5
. .r   r)  c                   H   a  ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR# )
SMTPUTF8SimTestsi  Nc                   \         P                  ! 4       V n        \        P                  V n        \        P                  \        n        \        P                  ! 4       V n	        \        P                  ! 4       V n
        \        \        ^ 3RRRR7      V n        V P                  P                  P                  4       ^,          V n        V P                  V P                  V P                  3p\        P                   ! \"        VR7      V n        V P$                  P'                  4        V P                  P)                  4        V P                  P+                  4        R# )r   FTr.  r   Nr   )r	   r   r   r/   r   r   r   r   r   r   r   r)  rC   r!   r   r0   r   r   r   r   r   r   r   s   & r   r1   SMTPUTF8SimTests.setUp  s    *::<"NN$,,!)#//+%tQi276:<	 II$$00215	YYt?	&&.>YO 	r   c                8   V P                   \        n        V P                  P	                  4        V P
                  P                  4        \        P                  ! V P                  4       V =	V P                  4        \        P                  ! V P                  !   R # r   ro  r   s   &r   r4   SMTPUTF8SimTests.tearDown  rq  r   c                >   \         P                  ! \        V P                  R \        P
                  R7      pV P                  VP                  4       VP                  4        V P                  VP                  4       V P                  VP                  R4      4       R# )r   r   r
  N)r.   r   rC   r0   r   r   r   r   r   r{  r  r  r   s   & r   $test_test_server_supports_extensions5SMTPUTF8SimTests.test_test_server_supports_extensions  sd    ||$))K,,. 	

#		(j12r   c                   R P                  R4      p\        P                  ! \        V P                  R\
        P                  R7      pV P                  VP                  4       VP                  RRVRR.R7       V P                  V P                  P                  R4       V P                  V P                  P                  R.4       V P                  V P                  P                  V4       V P                  RV P                  P                   4       V P                  RV P                  P                   4       V P                  V P                  P"                  . 4       R	# )
$   ¡a test message containing unicode!r  r   r   u   Jőhnu   Sállyr  r  r  N)r  r.   r   rC   r0   r   r   r   r   r!  r7   r!   r3  r4  r5  r  r6  r7  r}  s   &  r   ,test_send_unicode_with_SMTPUTF8_via_sendmail=SMTPUTF8SimTests.test_send_unicode_with_SMTPUTF8_via_sendmail  s    299'B||$))K,,. 	

#gx$3Z#@ 	 	B00'://(<//3otyy'B'BCj$))"="=>44b9r   c                   R P                  R4      p\        P                  ! \        V P                  R\
        P                  R7      pV P                  VP                  4       VP                  4        V P                  VP                  RRR.R7      R
4       V P                  VP                  R4      R
4       V P                  VP                  V4      R
4       V P                  V P                  P                  R4       V P                  V P                  P                   R.4       V P                  V P                  P"                  V4       V P%                  RV P                  P&                  4       V P%                  RV P                  P&                  4       V P                  V P                  P(                  . 4       R	# )rD  r  r   r   u   Jőr  r  r  u   JánosNr   )r  r.   r   rC   r0   r   r   r   r   r   r7   r;  rcptr`  r!   r3  r4  r5  r  r6  r7  r}  s   &  r   1test_send_unicode_with_SMTPUTF8_via_low_level_APIBSMTPUTF8SimTests.test_send_unicode_with_SMTPUTF8_via_low_level_API  sB   299'B||$))K,,. 	

#		IIeoz%BIC	 	8,l;1|400%8//(<//3otyy'B'BCj$))"="=>44b9r   c                P   \        4       pR VR&   RVR&   RVR&   VP                  R4       \        P                  ! R4      p\        P
                  ! \        V P                  R\        P                  R	7      pV P                  VP                  4       V P                  VP                  V4      / 4       V P                  V P                  P                  R
4       V P                  V P                  P                   R.4       V P                  V P                  P"                  P%                  4       V4       V P'                  RV P                  P(                  4       V P'                  RV P                  P(                  4       V P                  V P                  P*                  . 4       R# )r  rR  rc  rS  r  r  u1   oh là là, know what I mean, know what I mean?

u<              From: Páolo <főo@bar.com>
            To: Dinsdale
            Subject: Nudge nudge, wink, wink ὠ9
            Content-Type: text/plain; charset="utf-8"
            Content-Transfer-Encoding: 8bit
            MIME-Version: 1.0

            oh là là, know what I mean, know what I mean?
            r   r   u   főo@bar.comr  r  N)r   set_contenttextwrapdedentr.   r   rC   r0   r   r   r   r   r7   rL  r!   r3  r4  r5  r,  r  r6  r7  )r   r<  r:   r   s   &   r   2test_send_message_uses_smtputf8_if_addrs_non_asciiCSMTPUTF8SimTests.test_send_message_uses_smtputf8_if_addrs_non_ascii  s<   n-FD	:I 	MN ?? 	$ 	 ||$))K,,. 	

#**3/400.A//*>//668(Cotyy'B'BCj$))"="=>44b9r   r&  )r}   r~   r   r   r  r1   r4   rA  rE  rI  rO  r   r   r   s   @r   r;  r;    s-     G(	=3::&: :r   r;  s    psu doesnotexistr  )eolc                   &   a  ] tR tRt o R tRtV tR# )!SimSMTPAUTHInitialResponseChanneli  c                    VP                  4       pV^ ,          P                  4       R8X  d6   \        V4      ^8X  d&   V^,          \        8X  d   V P	                  R4       R# V P	                  R4       R# )r   plainz235 OkNz571 Bad authentication)r  r  r  EXPECTED_RESPONSEr  )r   r  r   s   && r   r  +SimSMTPAUTHInitialResponseChannel.smtp_AUTH  sW     yy{7==?g%4yA~ 7//IIh'		*+r   r   N)r}   r~   r   r   r  r   r   r   s   @r   rS  rS    s     , ,r   rS  c                       ] tR tRt]tRtR# ) SimSMTPAUTHInitialResponseServeri  r   N)r}   r~   r   r   rS  rT  r   r   r   r   rY  rY    s    5Mr   rY  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )SMTPAUTHInitialResponseSimTestsi  c                   \         P                  ! 4       V n        \        P                  V n        \        P                  \        n        \        P                  ! 4       V n	        \        P                  ! 4       V n
        \        \        ^ 3RRR7      V n        V P                  P                  P                  4       ^,          V n        V P                  V P                  V P                  3p\        P                   ! \"        VR7      V n        V P$                  P'                  4        V P                  P)                  4        V P                  P+                  4        R# rl  )r	   r   r   r/   r   r   r   r   r   r   r   rY  rC   r!   r   r0   r   r   r   r   r   r   r   s   & r   r1   %SMTPAUTHInitialResponseSimTests.setUp  s    *::<"NN$,,!)#//+41ID:	 II$$00215	YYt?	&&.>YO 	r   c                8   V P                   \        n        V P                  P	                  4        V P
                  P                  4        \        P                  ! V P                  4       V =	V P                  4        \        P                  ! V P                  !   R # r   ro  r   s   &r   r4   (SMTPAUTHInitialResponseSimTests.tearDown-  rq  r   c                    V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pVP                  RR4       VP                  4        R# )r  r   r   psudoesnotexistN)
r!   re  r.   r   rC   r0   r   r   r  r   r   s   & r   %testAUTH_PLAIN_initial_response_loginESMTPAUTHInitialResponseSimTests.testAUTH_PLAIN_initial_response_login8  sL    		l+||D$))K$+$<$<>

5.)

r   c                D   V P                   P                  R 4       \        P                  ! \        V P
                  R\        P                  R7      pRVn        RVn	        VP                  RVP                  4      w  r#VP                  4        V P                  V^4       R# )r  r   r   ra  rb  rU  N)r!   re  r.   r   rC   r0   r   r   r  r  r  r  r   r7   )r   r   r  responses   &   r   $testAUTH_PLAIN_initial_response_authDSMTPAUTHInitialResponseSimTests.testAUTH_PLAIN_initial_response_auth?  sr    		l+||D$))K$+$<$<>	&7DOO<

s#r   r&  N)
r}   r~   r   r   r1   r4   rc  rg  r   r   r   s   @r   r[  r[    s     &	=$ $r   r[  __main__)r  somepassword)Fr  email.mime.textrH  email.messager   email.base64mimer   encode_base64email.utilsr  r  r/   r.   r   rp   r   r   r   r   rM  r   r   unittest.mockr  testr   r   test.supportr   r   r	   r
   r   r   requires_working_socketrC   platformr   SMTPChannelr)   r+   TestCaser   r   r   r#  r$  r   r  r  r  r  r"  r  r  r'  	Exceptionr  r  rP  rL  rj  r)  r;  rV  rS  rY  r[  r}   mainr   r   r   <module>ry     s5     & 9      	 	 
        % ' & ) !     t ,<<8$/E!,`6 `6F|X%6%6 
/|X%6%6 /,> 6	
3S8,, Sj)** )60H-- 08=** =&;x(( ;@ "("9&x	
 2; +,EF,.	
 )	 (zU&& zzE$$ 6mV8$$ mV`. .4l:x(( l:^ ""8bA , ,6} 6.$h&7&7 .$b zMMO r   