python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_smtplib.cpython-312.opt-2.pyc

Αe
ZddlZddlZddlmZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlmZmZddlmZddlmZddlmZddlmZdd	lmZd
dl m!Z!ejDd
ejFZ#ejHdk(rdZ%e%e!jL_%dZ'GddZ(Gdde(ejRZ*Gdde(ejRZ+dZ,dZ-dZ.GddejRZ/GddejRZ0GddejRZ1Gd d!ejRZ2Gd"d#ejRZ3d$d%d&d'Z4d(Z5d)Z6d*d+gd,gd-Z7Gd.d/e8Z9Gd0d1e!jLZ:Gd2d3e!jvZ<Gd4d5ejRZ=Gd6d7e<Z>Gd8d9ejRZ?ed:d;<Z@Gd=d>e:ZAGd?d@e<ZBGdAdBejRZCeDdCk(rejyy)DN)EmailMessage)body_encode)supportmock_socket)hashlib_helper)
socket_helper)threading_helper)asyncore)Mock)smtpdT)moduledarwincyNselfs E/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_smtplib.pyhandle_exptr%sc|j|j	|j\}}d}|rF|dkDrAtjg|gg\}}}|r|j	|}	||	d}|dz}|r|dkDrA|j|j|jy#t$rY,wxYw#|j|jwxYw)Nirr)listensetacceptselectsendcloseTimeoutError)
evtbufservconnaddrnrwesents
          rserverr**sKKMGGI[[]
d
a!emmB3GAq!yy~$%j
FA
a!e	



	

	

	s/B0A	B??B?0	B<9B?;B<<B??"C!cZeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
Zy)GeneralTestsc0tt_d|_y)N)rsmtplibsocketportrs rsetUpzGeneralTests.setUpBs$	rc"tt_yr)r0r/rs rtearDownzGeneralTests.tearDownFs	rcVd}d}|j|tj|y)Nzabc
.jkl
foo
..bluezabc
..jkl
foo
...blue)assertEqualr/	quotedata)rteststrexpecteds   r
testQuoteDatazGeneralTests.testQuoteDataKs'-37#4#4W#=>rctjd|jt|j}|jy)N220 Hola mundor
reply_withclientHOSTr1rrr?s  r
testBasic1zGeneralTests.testBasic1Ps.01T499-rctjd|jt|jd}|j|jd|jy)Nr<)z	127.0.0.1iM)source_address)rr>r?r@r1r6rDrrAs  rtestSourceAddresszGeneralTests.testSourceAddressVsP01T499,?A..0DErctjd|jtd|j}|jy)Nr<:r=rAs  r
testBasic2zGeneralTests.testBasic2^s101dii89rctjd|jt|jd}|j|jd|jy)Nr<testhost)local_hostname)rr>r?r@r1r6rKrrAs  rtestLocalHostNamezGeneralTests.testLocalHostNamedsH01T499ZH..
;rctjd|jtjtjd|jtjd	|j
t|j}tjd|j|jjd|jy#tjdwxYw)Nr<)rr>assertIsNonegetdefaulttimeoutsetdefaulttimeoutr6r?r@r1sock
gettimeoutrrAs  rtestTimeoutDefaultzGeneralTests.testTimeoutDefaultks01+779:%%b)668"=	0[[tyy1F))$///126
))$/s3 C##C:ctjd|jtjtj
d	|j
t|jd}tj
d|j|jj|jy#tj
dwxYwNr<rNtimeout)rr>rOr0rPrQr?r@r1rRrSrrAs  rtestTimeoutNonezGeneralTests.testTimeoutNonews01&2245  $	+[[tyy$[?F$$T*&++0023
$$T*s"CCctjd|jt5|j	t
|jddddy#1swYyxYw)Nr<rrW)rr>assertRaises
ValueErrorr?r@r1rs rtestTimeoutZerozGeneralTests.testTimeoutZerosJ01


z
*	4KKdiiK3	4	4	4s#AA ctjd|jt|jd}|j|jjd|jyrV)	rr>r?r@r1r6rRrSrrAs  rtestTimeoutValuezGeneralTests.testTimeoutValuesO01T499b9//126rctjd|j}|jdt	j
5}|j
t|jddd|jtjdtj}|jj|y#1swY^xYw)N220 Hello worldrz	^connect:rr>r?set_debuglevelrcaptured_stderrconnectr@r1rrecompile	MULTILINEassertRegexgetvaluerr?stderrr9s    rtest_debuglevelzGeneralTests.test_debuglevels12a 

$
$
&	,&NN4+	,::lBLL9*H5		,	,!C		Cctjd|j}|jdt	j
5}|j
t|jddd|jtjdtj}|jj|y#1swY^xYw)Nraz#^\d{2}:\d{2}:\d{2}\.\d{6} connect: rbrks    rtest_debuglevel_2zGeneralTests.test_debuglevel_2s12a 

$
$
&	,&NN4+	,::D ll,*H5	,	,rnN)__name__
__module____qualname__r2r4r:rBrErHrLrTrYr]r_rmrqrrrr,r,@sC 
?

	4
6	6rr,c$eZdZejZy)SMTPGeneralTestsN)rrrsrtr/SMTPr?rrrrvrvs
\\FrrvcveZdZejZejee	dddZ
fdZxZS)LMTPGeneralTestsAF_UNIXz test requires Unix domain socketc<d}tjd	|j||j}tjd|j|jj|jy#tjdwxYw)N!/some/local/lmtp/delivery/programra)	rr>r?r1rQrOrRrSr)r
local_hostr?s   r"testUnixDomainSocketTimeoutDefaultz3LMTPGeneralTests.testUnixDomainSocketTimeoutDefaultss8
12	0[[TYY7F))$/&++0023
))$/sBBct|d}|jt5|j	|ddddy#1swYyxYw)Nr|rrW)superr]r[r\r?)rr}	__class__s  rr]z LMTPGeneralTests.testTimeoutZerosF
!8



z
*	/KK
AK.	/	/	/sAA
)
rrrsrtr/LMTPr?unittest
skipUnlesshasattrr0r~r]
__classcell__rs@rryrys@
\\FX35WXY//rryc|j	ttdrtj}ntj
}d}tjrX|dkDrS|dtj|jr|jn|dz}tjr|dkDrS|js%tjd|jtj|jy#t$rYewxYw#|js%tjd|jtj|jwxYw)Npollir{Gz?rg?)
rrrr
poll2r
socket_mapis_setrrtimesleep	close_all)r"serv_evt
client_evtpoll_funr%s     rdebugging_serverrsLLN66"~~H}}H!!a!eT8../  "


FA!!a!e  "JJsOJJL

  "JJsOJJLs%BD	DDDDAE1z&---------- MESSAGE FOLLOWS ----------
z&------------ END MESSAGE ------------
ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZy)DebuggingServerTestsNctj|_tj|_tjt_tj|_	tj|_|jt_tj|_tj|_t"j$|_tjt"_t#j(t*dfdd|_|j,jj/dd\|_|_|j,|j|j f}tj4t6||_|j8j;|jj=|jj?y)NrnowhereTdecode_datarptargetargs) r	threading_setup
thread_keyr0getfqdnreal_getfqdnrsysstdout
old_stdoutioStringIOoutput	threadingEventrrr
DEBUGSTREAMold_DEBUGSTREAMDebuggingServerr@r"getsocknamehostr1Threadrthreadstartwaitclearr	serv_argss  rr2zDebuggingServerTests.setUps,*::<"NN$,,**kkm[[
!)
#//+$00KKM))4)_6:<	 $yy//;;=bqA	49YY

t?	&&.>YO	




rc|jt_|jj	|j
j
tj|j|jt_tjj|j t_|`	|j#tj$|j&yr)rr0rrrrrr	join_threadrrrrr
rrr
doCleanupsthreading_cleanuprrs rr4zDebuggingServerTests.tearDowns**

$$T[[1__

! 00K**DOO<rc|jj}tjdd|tjtj
zS)Nz(.*?)^X-Peer:\s*\S+\n(.*)z\1\2)flags)rrjrfsubrhDOTALL)rtest_outputs  rget_output_without_xpeerz-DebuggingServerTests.get_output_without_xpeers>kk**,vv2G!bii)?A	Arctjt|jdtj
}|j
yN	localhostrKrXr/rwr@r1rLOOPBACK_TIMEOUTquitrsmtps  r	testBasiczDebuggingServerTests.testBasic,||D$))K$+$<$<>		rc"tj}	tj|j|j
dtj|j|f}|j|j|j|j|j|f|j|jd|jy#t$r7}|jtj k(r|j#d|zd}~wwxYw)Nr)rKrXrDzcouldn't bind to source port %d)rfind_unused_portr/rwrr1rr
addCleanuprr6rDrKrOSErrorerrno
EADDRINUSEskipTest)rsrc_portrr(s    rrEz&DebuggingServerTests.testSourceAddress s 113	<<		499[(/(@(@04		8/DFD
OODJJ'T00499h2GHT00+>IIK	ww%***

?(JK	sB7C	D2D		Dctjt|jdtj
}|j
|jd}|j|j||jyNrrsOK)r/rwr@r1rrrrr6nooprrrr9s   rtestNOOPzDebuggingServerTests.testNOOP0W||D$))K$+$<$<>

#h/		rctjt|jdtj
}|j
|jd}|j|j||jyr)r/rwr@r1rrrrr6rsetrrs   rtestRSETzDebuggingServerTests.testRSET8rrctjt|jdtj
}|j
|jd}|j|j||jy)Nrr)rs
SIZE 33554432
HELP)r/rwr@r1rrrrr6ehlorrs   rtestELHOzDebuggingServerTests.testELHO@sW||D$))K$+$<$<>

#2h/		rc*tjt|jdtj
}|j
|jd}|jd|j|j||jy)Nrr)isEXPN not implementedEXPN)r/rwr@r1rrrrputcmdr6getreplyrrs   rtestEXPNNotImplementedz+DebuggingServerTests.testEXPNNotImplementedIsc||D$))K$+$<$<>

#1F(3		rctjt|jdtj
}|j
|j|jt5}|jdddd|jdtj|jy#1swY?xYw)Nrrzhelo
X-INJECTEDprohibited newline characters)r/rwr@r1rrrrr[r\rassertInstr	exceptionr)rrexcs   r&test_issue43124_putcmd_escapes_newlinez;DebuggingServerTests.test_issue43124_putcmd_escapes_newlineSs||D$))K$+$<$<>

#


z
*	,cKK*+	,

5s3==7IJ			,	,s&B66B?cLtjt|jdtj
}|j
|jd}|j|jd||j|jd||jy)Nrr)s>Cannot VRFY user, but will accept message and attempt deliverynobody@nowhere.com)r/rwr@r1rrrrr6vrfyverifyrrs   rtestVRFYzDebuggingServerTests.testVRFY]sw||D$))K$+$<$<>

#2#78(C%9:HE		rc(tjt|jdtj
}|j
|j|jd}|j|j||jy)Nrr)isDuplicate HELO/EHLO)r/rwr@r1rrrrhelor6rrs   rtestSecondHELOz#DebuggingServerTests.testSecondHELOgsb||D$))K$+$<$<>

#		0h/		rctjt|jdtj
}|j
|j|j|jd|jy)Nrrs@Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY)r/rwr@r1rrrrr6helprrs  rtestHELPzDebuggingServerTests.testHELPrsY||D$))K$+$<$<>

#'G	H		rc*d}tjt|jdtj
}|j
|j|jdd|tjd|j|jj|jj|j j#t$|dt&}|j)|j j+|y)NA test messagerrJohnSallyr
r/rwr@r1rrrrsendmailrrrrrrrrflush	MSG_BEGINMSG_ENDr6rjrmrmexpects    rtestSendzDebuggingServerTests.testSendzs||D$))K$+$<$<>

#

fgq)	

4		

 )1g6--/9rcHd}tjt|jdtj
}|j
|j|jdd|tjd|j|jj|jj|j j#t$|j'ddt(}|j+|j j-|y)	NsA test messagerrrrrasciir)r/rwr@r1rrrrrrrrrrrrrrrdecoderr6rjrs    rtestSendBinaryz#DebuggingServerTests.testSendBinarys||D$))K$+$<$<>

#

fgq)

4		

 )188G+<gF--/9rc*d}tjt|jdtj
}|j
|j|jdd|tjd|j|jj|jj|j j#t$|dt&}|j)|j j+|y)Nz.A test
.mes.sage.rrrrrrrrs    rtestSendNeedingDotQuotez,DebuggingServerTests.testSendNeedingDotQuotes!||D$))K$+$<$<>

#

fgq)

4		

 )1g6--/9rcd}tjt|jdtj
}|j
|j|jt5}|jdd|ddd|jdtjtjd|j!t"j$j'}|j)d|y#1swYxYw)	Nwazzuuup
linetwoz
hi
X-INJECTEDr	hi@me.com
you@me.comz2prohibited newline characters: ehlo hi\nX-INJECTEDrz
X-INJECTED)r/rwr@r1rrrrr[r\rrrrrrrr
rrjassertNotIn)rrrrdebugouts     r$test_issue43124_escape_localhostnamez9DebuggingServerTests.test_issue43124_escape_localhostnames
 ||D$))<L$+$<$<>

#


z
*	8cMM+|Q7	8

A

	

	

4		$$--/x0	8	8s(C??Dcd}tjt|jdtj
}|j
|j|jdd||jt5}|jdddgdddtj}|jd||jd	|tj d
|j#t$j&j)}|j+d||j+d||j+d
||j+d|y#1swYxYw)NrrrrrzX-OPTION
X-INJECTED-1zX-OPTION2
X-INJECTED-2rz.X-OPTION\nX-INJECTED-1 X-OPTION2\nX-INJECTED-2rzX-OPTIONz	X-OPTION2zX-INJECTED-1zX-INJECTED-2)r/rwr@r1rrrrrr[r\mailrrrrrrr
rrjr)rrrrmsgrs      rtest_issue43124_escape_optionsz3DebuggingServerTests.test_issue43124_escape_optionss 
 ||$))K,,.	


#

k<3


z
*	ZcIIk$<>W#XY	Z#-- 

5s;

H#N

4		$$--/X.h/22	Z	Zs;EE&cd}tjt|jdtj
}|j
|j|jdd|tjd|j|jj|jj|j j#t$|dt&}|j)|j j+|t,j.j+}t1j2dt0j4}|j7||y)	Nrrrz<>rrrz^sender: <>$)r/rwr@r1rrrrrrrrrrrrrrrrr6rjr
rrfrgrhri)rrrrrsenders      rtestSendNullSenderz'DebuggingServerTests.testSendNullSenders||D$))K$+$<$<>

#

dGQ'

4		

 )1g6--/9$$--/NBLL96*rctjjjd}t	j
t|jdtj}|j|j|j|ddtjd|j|j j#|j$j'|j(j+|j-}|d=t.|j1d	t2}|j5||y)
Nrrrrr	from_addrto_addrsrX-Peerr)emailmimetextMIMETextr/rwr@r1rrrrsend_messagerrrrrrrrrrr	as_stringrr6)rrrrrs     rtestSendMessagez$DebuggingServerTests.testSendMessagesJJOO$$%56||D$))K$+$<$<>

#!v@

4		


335
hK )1;;='Bg.rctjjjd}d|d<d|d<d|d<d|d	<t	j
t|jd
tj}|j|j|j|tjd|j|j!|d	d|j"j%|j&j)|j*j-|j/}|d
=|d	=t0|j3dt4}|j!||t6j8j;}t=j>dt<j@}|jC||dD]G}t=j>djE|t<j@}|jC||Iy)Nrfoo@bar.comFromrToSally, FredCC?John Root <root@localhost>, "Dinsdale" <warped@silly.walks.com>Bccrrrr!r^sender: foo@bar.com$)rrFredzroot@localhostzwarped@silly.walks.com^recips: .*'{}'.*$)#r"r#r$r%r/rwr@r1rrrrr&rrrr6rrrrrrrrr'rr
rrjrfrgrhriformat	rrrrrrrr$to_addrs	         rtestSendMessageWithAddressesz1DebuggingServerTests.testSendMessageWithAddressessJJOO$$%56!&	$$T%||D$))K$+$<$<>

#!

4		5$?	@	


335
hK
eH )1;;='Bg.$$--/3R\\B6*/	0Djj!6!=!=d!C!#/GXw/		0rctjjjd}d|d<d|d<t	j
t|jdtj}|j|j|j|tjd|j|j j#|j$j'|j(j+|j-}|d	=t.|j1d
t2}|j5||t6j8j;}t=j>dt<j@}|jC||dD]G}t=j>d
jE|t<j@}|jC||Iy)Nrr*r+John, Dinsdaler,rrrr!rr1rDinsdaler3#r"r#r$r%r/rwr@r1rrrrr&rrrrrrrrrrrr'rr6r
rrjrfrgrhrir4r5s	         r testSendMessageWithSomeAddressesz5DebuggingServerTests.testSendMessageWithSomeAddresses(scJJOO$$%56!&	"$||D$))K$+$<$<>

#!

4		

335
hK )1;;='Bg.$$--/3R\\B6*(	0Djj!6!=!=d!C!#/GXw/	0rcLtjjjd}d|d<d|d<t	j
t|jdtj}|j|j|j|dd	
tjd|j|j j#|j$j'|j(j+|j-}|d=t.|j1d
t2}|j5||t6j8j;}t=j>dt<j@}|jC||dD]G}t=j>djE|t<j@}|jG||It=j>dt<j@}	|jC||	y)Nrr*r+r9r,rrzjoe@example.comzfoo@example.netrrr!rz^sender: joe@example.com$r:r3z^recips: .*'foo@example.net'.*$)$r"r#r$r%r/rwr@r1rrrrr&rrrrrrrrrrrr'rr6r
rrjrfrgrhrir4assertNotRegex)
rrrrrrrr$r6recips
          r%testSendMessageWithSpecifiedAddressesz:DebuggingServerTests.testSendMessageWithSpecifiedAddressesEsJJOO$$%56!&	"$||D$))K$+$<$<>

#!'8CTU

4		

335
hK )1;;='Bg.$$--/7F6*(	3Djj!6!=!=d!C!#/G'2	3

=r||L5)rctjjjd}d|d<d|d<d|d<t	j
t|jdtj	}|j|j|j|tjd
|j|j j#|j$j'|j(j+|j-}|d=t.|j1dt2}|j5||t6j8j;}t=j>d
t<j@}|jC||dD]G}t=j>djE|t<j@}|jC||Iy)NrzBernard, Biancar+z#the_rescuers@Rescue-Aid-Society.comSenderr9r,rrrr!rz-^sender: the_rescuers@Rescue-Aid-Society.com$r:r3r<r5s	         rtestSendMessageWithMultipleFromz4DebuggingServerTests.testSendMessageWithMultipleFromdslJJOO$$%56%&	;("$||D$))K$+$<$<>

#!

4		

335
hK )1;;='Bg.$$--/KR\\Z6*(	0Djj!6!=!=d!C!#/GXw/	0rc"tjjjd}d|d<d|d<d|d<d|d	<d
|d<d|d
<d|d<d|d<t	j
t|jdtj}|j|j|j|tjd|j|j j#|j$j'|j(j+|d	=|d=|j-}|d=t.|j1dt2}|j5||t6j8j;}t=j>dt<j@}|jC||dD]G}t=j>djE|t<j@}|jC||Iy)Nrr*r+rr,r-r.r/r0Thu, 1 Jan 1970 17:42:00 +0000Resent-Dateholy@grail.netResent-From&Martha <my_mom@great.cooker.com>, Jeff	Resent-Todoe@losthope.net
Resent-Bccrrrr!rz^sender: holy@grail.net$)zmy_mom@great.cooker.comJeffrLr3r<r5s	         rtestSendMessageResentz*DebuggingServerTests.testSendMessageResentsJJOO$$%56!&	$$T%;-+-A+,,||D$))K$+$<$<>

#!

4		


eH
lO335
hK )1;;='Bg.$$--/6E6*K	0Djj!6!=!=d!C!#/GXw/	0rctjjjd}d|d<d|d<d|d<d|d	<d
|d<d|d
<d|d<d|d<d|d<d|d<d|d
<t	j
t|jdtj}|j|j|jt5|j|ddd|jy#1swYxYw)Nrr*r+rr,r-r.r/r0rFrGrHrIrJrKrLrMzThu, 2 Jan 1970 17:42:00 +0000rr)r"r#r$r%r/rwr@r1rrrrr[r\r&rrrs   r#testSendMessageMultipleResentRaisesz8DebuggingServerTests.testSendMessageMultipleResentRaisessJJOO$$%56!&	$$T%;-+-A+,,;-)+C-||D$))K$+$<$<>

#


z
*	!a 	!

	!	!sC11C:)rrrsrtmaxDiffr2r4rrrErrrrrrrrrrrrrrr(r7r=rArDrOrRrrrrrsG6= A
 	:&: :"1(32+&/,"0H0:*>0<#0JrrceZdZdZdZdZy)NonConnectingTestsctj}|jtj|j|jtj|j
dy)Nztest msg)r/rwr[SMTPServerDisconnectedrrrs  rtestNotConnectedz#NonConnectingTests.testNotConnectedsH
||~'88$))D'88))Z	1rc|jttjdd|jttjdy)Nrboguszlocalhost:bogus)r[rr/rwrs rtestNonnumericPortz%NonConnectingTests.testNonnumericPorts6'7<<%w	0'7<<+	-rctj5}|j|jdddy#1swYyxYwr)r/rwrOrRrs  rtestSockAttributeExistsz*NonConnectingTests.testSockAttributeExistss6\\^	)tdii(	)	)	)s	:AN)rrrsrtrXr[r]rrrrUrUs1-)rrUceZdZdZdZdZy)DefaultArgumentsTestsct|_d|jd<tj|_td|j_ttc|j_|j_y)NPáolo <főo@bar.com>r+)OK)return_value)	rrr/rwrrrhas_extnrrs rr2zDefaultArgumentsTests.setUpsT>2LLN	;7		15.		DII.rcd}|jj|j|jj|j|j|jjj
ddd||j|jjj
ddd|y)N)SMTPUTF8
BODY=8BITMIMErrrr&rr6rcall_args_list)rexpected_mail_optionss  rr(z%DefaultArgumentsTests.testSendMessages =		txx(		txx(++::1=a@C.	0++::1=a@C.	0rcdg}d}|jj|jdd||j|dg|j|jjj
ddd|y)NSTARTTLS)rnrgrhrrirj)rmail_optionsrls   rtestSendMessageWithMailOptionsz4DefaultArgumentsTests.testSendMessageWithMailOptionsso"| I		txxt\B
|4++::1=a@C.	0rN)rrrsrtr2r(rprrrr_r_s@00rr_ceZdZdZdZdZy)BadHELOServerTestsctt_tjdtj
|_tj|_	|jt_d|_
y)Ns199 no hello for you!r.)rr/r0r>rrrrrrr1rs rr2zBadHELOServerTests.setUpsB$78**kkm[[
	rcLtt_|jt_yr)r0r/rrrrs rr4zBadHELOServerTests.tearDowns__
rc|jtjtjt|j
ddyNrri)r[r/SMTPConnectErrorrwr@r1rs rtestFailingHELOz"BadHELOServerTests.testFailingHELOs+'22GLL $))[!	=rN)rrrsrtr2r4rxrrrrrrrs%=rrrcNeZdZddejzdzzdzZdZdZdZy)	TooLongLineTestss250 OK.rp
ctj|_tj|_t
j|_|jt_tj|_tjtjtj|_|jj!dt#j$|j|_|j|j(|jf}tj*t,||_|j.j1|jj3|jj5y)Nr)r	rrrrrrrrrrr r0AF_INETSOCK_STREAMrR
settimeoutr	bind_portr1respdatarr*rrrr)rservargss  rr2zTooLongLineTests.setUps*::<**kkm[[
??$MM&..&2D2DE			R !++DII6	HHdmmTYY7&&f8D

rc|jj|jt_tj|j|`|jtj|jyr)r rrrrr	rrrrrrs rr4zTooLongLineTests.tearDownsM

__
$$T[[1K**DOO<rc|jtjtjt|j
ddyrv)r[r/SMTPResponseExceptionrwr@r1rs rtestLineTooLongz TooLongLineTests.testLineTooLong s+'77		;	;rN)	rrrsrtr/_MAXLINErr2r4rrrrrzrzs0D7#3#33a785@H =;rrzzJohn AzSally BzRuth C)Mr.A@somewhere.comMs.B@xn--fo-fka.comMrs.C@somewhereesle.com)rsomepasswordz<PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=rrr)zlist-1zlist-2ceZdZy)ResponseExceptionN)rrrsrtrrrrr2srrceZdZdZdZdZdZdZdZdZ	dZ
dZfdZfdZ
dZdZdZdd	Zdd
ZddZddZd
ZdZdZfdZfdZfdZfdZfdZdZxZS)SimSMTPChannelNrccdj|Dcgc]}dj|c}|_tt||i|ycc}w)Nz	250-{0}
)joinr4_extrafeaturesrr__init__)rextra_featuresrkwxrs     rrzSimSMTPChannel.__init__?sH gg/=?!m""1%?A
nd,d9b9
@sA	c|j|jk(rd|jj|j}tdt
|tjg|_	|j|yt|Ay#t$rE}|j|_|j|jd|jYd}~yd}~wwxYw)NzData:)file )
smtp_stateAUTH_emptystringrreceived_linesprintreprr
rauth_objectrCOMMANDpush	smtp_code
smtp_errorrfound_terminator)rliner(rs   rrzSimSMTPChannel.found_terminatorEs??dii'$$))$*=*=>D'4:E,=,=>"$D
A  &

 "	%
A"&,,		Q[[!,,?@@
As-B	C;CCct|js|jdy|jrd|jvr|jdy|j|jdy|j}t
|dvr|jdyd|djjd	d
z}	t|||_
|j|_|jt
|dk(r
|d
ydy#t$r#|jdj|YywxYw)Nz503 Error: send EHLO firstrz(500 Error: command "AUTH" not recognizedz3503 Bad sequence of commands: already authenticated)rrpz/501 Syntax: AUTH <mechanism> [initial-response]z_auth_%sr-_zQ504 Command parameter not implemented: unsupported  authentication mechanism {!r}rpr)
seen_greetingr
extended_smtprauthenticated_usersplitlenlowerreplacegetattrrAttributeErrorr4rr)rargrauth_object_names    r	smtp_AUTHzSimSMTPChannel.smtp_AUTHSs!!II23!!V43F3F%FII@A"".IIE
Gyy{t9F"IIGH%Q

(?(?S(II	&t-=>D
))CINa==	II77=v>N7O
Q	s?D)D76D7c~|r||_|jdn|jd|j|_y)Nz235 Authentication Succeededz&535 Authentication credentials invalid)rrrr)ruservalids   r_authenticatedzSimSMTPChannel._authenticatedls2&*D#II45II>?,,rchtj|jdjdS)Nr
utf-8)base64decodebytesencoder)rstrings  r_decode_base64zSimSMTPChannel._decode_base64ts'!!&--"89@@IIrc ||jdy|j|}	|jd^}}}|j||tdk(y#t$r+}|jdj	||Yd}~yd}~wwxYw)Nz334 =535 Splitting response {!r} into user and password failed: {}r)rrrr\r4rsim_auth)rrlogpassrrpasswordr(s       r_auth_plainzSimSMTPChannel._auth_plainws;IIf))#.G
%,]]4%8"D(

h(1+&=>	
		((.w(:<
sA	B
"!BB
c||jdyt|ds(|j||_|jdy|j|}|j	|j|t
dk(|`y)Nz334 VXNlcm5hbWU6_auth_login_userz334 UGFzc3dvcmQ6r)rrrrrr)rrrs   r_auth_loginzSimSMTPChannel._auth_loginst;II()12$($7$7$<D!II()**3/H 5 5x8A;7NO%rc&|jdy)Nz334 QnVHZ1liVWdHeQ==)rrrs  r_auth_buggyzSimSMTPChannel._auth_buggys	
		()rc|%|jdjty|j|}	|j	\}}t
jtdjd|jtjddj}|j|||k(y#t
$r+}|jdj||Yd}~yd}~wwxYw)Nz334 {}rFrr
md5)rr4sim_cram_md5_challengerrr\hmacHMACrr	hexdigestr)rrrrhashed_passr(valid_hashed_passs       r_auth_cram_md5zSimSMTPChannel._auth_cram_md5s;IIhoo&<=>))#.G
$+MMO!k
!%		""7+##$:;BB7K!!y{

k5F&FG
		''-vgq'9;
sC	C4	!C//C4cjd}||jzdz}|j|||_d|_y)NzH250-testhost
250-EXPN
250-SIZE 20000000
250-STARTTLS
250-DELIVERBY
z250 HELPT)rrrr)rrresps   r	smtp_EHLOzSimSMTPChannel.smtp_EHLOs;$
d)))J6		$ !rc|tvr2|jdt|dtj|y|jd|zy)N250 rz550 No such user: %s)	sim_usersrr/	quoteaddrrs  r	smtp_VRFYzSimSMTPChannel.smtp_VRFYs<)IIYs^W5F5Fs5KLMII,s23rcV|j}|tvrt|}t|D]h\}}tj|}|t|dz
kr|j
dt|d|K|j
dt|d|jy|j
dy)Nrz250-rrz550 No access for you!)r	sim_lists	enumerater/rrrr)rr	list_name	user_listr%
user_emailquoted_addrs       r	smtp_EXPNzSimSMTPChannel.smtp_EXPNsIIK		!!),I!*9!5
R
:%//
;s9~))IIYz-BKPQIIYz-BKPQ
R
II./rc|jtt||y|j	|j|jyr)
quit_responserr	smtp_QUITrclose_when_donerrrs  rrzSimSMTPChannel.smtp_QUITs<%.$1#6IId(()  "rc|jt|	|y|j|j|jr|jyyr)
mail_responser	smtp_MAILr
disconnectrrs  rrzSimSMTPChannel.smtp_MAILsF%Gc"IId(()$$&rc|jt|	|y|xjdz
c_|j	|j|jdz
yNr)
rcpt_responser	smtp_RCPT
rcpt_countrrs  rrzSimSMTPChannel.smtp_RCPTsM%Gc"1		$$$T__Q%678rcN|xjdz
c_t|	|yr)
rset_countr	smtp_RSETrs  rrzSimSMTPChannel.smtp_RSETs1
#rct|jt|	|y|j|jyr)
data_responser	smtp_DATArrs  rrzSimSMTPChannel.smtp_DATAs.%Gc"IId(()rcrrrs rhandle_errorzSimSMTPChannel.handle_error
rr)rrrsrtrrrrrrrrrrrrrrrrrrrrrrrrrrrrrs@rrr3sMMMMJJJ
D:#>2'J?&*
H$	"40#'9*rrc.eZdZeZdZdZdZdZdZ	y)
SimSMTPServercfg|_i|_tjj|g|i|yr)_extra_features
_addressesr

SMTPServerrrrrs   rrzSimSMTPServer.__init__s/!
!!$444rcb|j|j||||j|_y)Nr)
channel_classr_decode_data_SMTPchannelrr#r$s   rhandle_acceptedzSimSMTPServer.handle_accepteds2 ..  $d))/+rc@||jd<||jd<y)Nfromtos)r)rpeermailfromrcpttosdatas     rprocess_messagezSimSMTPServer.process_messages"*!(rc:|jj|yr)rappend)rfeatures  radd_featurezSimSMTPServer.add_features##G,rcrrrs rrzSimSMTPServer.handle_errorrrN)
rrrsrtrr
rrrrrrrrrrs "M5
+
)-rrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
ejdd
dZejdd
dZdZdZdZdZdZdZdZdZdZdZdZdZy)SMTPSimTestsctj|_tj|_tjt_tj|_	tj|_
ttdfdd|_
|jjjd|_|j|j|jf}tj t"||_|j$j'|jj)|jj+yNrrTrrr)r	rrr0rrrrrrrrr@r"rr1rrrrrrrs  rr2zSMTPSimTests.setUps*::<"NN$,,!)
#//+!4)_$O	II$$00215	YY

t?	&&.>YO	




rc0|jt_|jj	|j
j
tj|j|`	|jtj|jyr
rr0rrrrrr	rrrrrrs rr4zSMTPSimTests.tearDownb**

$$T[[1K**DOO<rctjt|jdtj
}|j
yrrrs  rrzSMTPSimTests.testBasic%rrctjt|jdtj
}|j
|jidddddd}|j|j
|j||D]"}|j|j|$|j|jd|jy)Nrrr20000000)expnsizestarttls	deliverbyrzunsupported-feature)
r/rwr@r1rrr6esmtp_featuresr
assertTruereassertFalser)rrexpected_featuresks    rtestEHLOzSMTPSimTests.testEHLO+s||D$))K$+$<$<>	
,,b1%'%/)+*,%'		
		,,.?@"	.AOODMM!,-	.'<=>		rc	tjt|jdtj
}tjD]L\}}dt|dtj|df}|j|j||Nd}dd|zjdf}|j|j|||jy)	Nrrrrr
r&zNo such user: %s)r/rwr@r1rrritemsbytesrr6rrr)rr	addr_specnameexpected_knownuexpected_unknowns       rrzSMTPSimTests.testVRFYAs||D$))K$+$<$<> )0	COIt!5*.0A0A)0L*N)0$23N
TYYy1>B		C
!"4q"8!@!@!IJ1'78		rc	tjt|jdtj
}tjD]|\}}g}|D]2}|jt|dtj|4dtdj|df}|j|j||~d}d}|j|j|||jy)	Nrrrrrr
zPSU-Members-List)r1sNo access for you!)r/rwr@r1rrrr2rrrr3rr6r&r)	rrlistnamemembersusersrr6r7r8s	         rtestEXPNzSMTPSimTests.testEXPNPs||D$))K$+$<$<>"+!2	BHgE
M	!g6G6G6JKL
M!55)97#CDNTYYx0.A	B
71'78		rc(|jjdtjt|j
dtj}|jtdtd}|j|d|jy)N
AUTH PLAINrrrrsAuthentication Succeededr"rr/rwr@r1rrloginrr6rrrrs   rtestAUTH_PLAINzSMTPSimTests.testAUTH_PLAIN`g		l+||D$))K$+$<$<>zz(1+x{3AB

rc(|jjdtjt|j
dtj}|jtdtd}|j|d|jy)N
AUTH LOGINrrrrr@rBrDs   rtestAUTH_LOGINzSMTPSimTests.testAUTH_LOGINhrFrcv|jjdtjt|j
dtj5}t\|_	|_
|jd|jd|jd}|j|ddddy#1swYyxYw)	NrHrrtest_auth_loginLOGINTinitial_response_okr@r"rr/rwr@r1rrrrrrauth
auth_loginr6rDs   r"testAUTH_LOGIN_initial_response_okz/SMTPSimTests.testAUTH_LOGIN_initial_response_okps		l+
\\$		+")":":<	G?C'/$DIt}II'(99Wdoo49PDT#EF	G	G	G
AB//B8cv|jjdtjt|j
dtj5}t\|_	|_
|jd|jd|jd}|j|ddddy#1swYyxYw)	NrHrrrKrLFrMr@rOrDs   r%testAUTH_LOGIN_initial_response_notokz2SMTPSimTests.testAUTH_LOGIN_initial_response_notokys		l+
\\$		+")":":<	G?C'/$DIt}II'(99Wdoo59QDT#EF	G	G	GrScjjdd
fd	}tjtj
dtj}	t\|_	|_
|jdd}jtj|5}|jd|d	ddd|jy#1swYxYw#|jwxYw)Nz
AUTH BUGGYc*jd|y)Ns
BuGgYbUgGyr)r6)	challengers r
auth_buggyz/SMTPSimTests.testAUTH_BUGGY.<locals>.auth_buggys]I6rrrtest_auth_buggyz&^Server AUTH mechanism infinite loop.*BUGGYFrMr)r"rr/rwr@r1rrrrrrassertRaisesRegex
SMTPExceptionrPr)rrYrexpectcms`    rtestAUTH_BUGGYzSMTPSimTests.testAUTH_BUGGYs		l+	||$))K,,
	'/$DIt}II'(>F''(=(=vF
J"		':5	I
J
JJL
J
J
JJLs%ACC
4C
CCC+rT)opensslc(|jjdtjt|j
dtj}|jtdtd}|j|d|jy)Nz
AUTH CRAM-MD5rrrrr@rBrDs   rtestAUTH_CRAM_MD5zSMTPSimTests.testAUTH_CRAM_MD5sg		o.||D$))K$+$<$<>zz(1+x{3AB

rc(|jjdtjt|j
dtj}|jtdtd}|j|d|jy)NzAUTH BOGUS PLAIN LOGIN CRAM-MD5rrrrr@rBrDs   rtestAUTH_multiplezSMTPSimTests.testAUTH_multiplesj	
		?@||D$))K$+$<$<>zz(1+x{3AB

rc	ddh}	tj|jd|D],}|jjdj
|.|D]}|j|5tjt|jdtj}|jdtd	td
c|_|_d|j%j'dd
z}|j)|t+||}|j-|d|j/dddy#t$rY$wxYw#1swYxYw)NPLAINrLzCRAM-MD5zAUTH {})	mechanismrrfoorrauth_rrr@)hashlibraddr\r"rr4subTestr/rwr@r1rrrrrrrrrPrr6r)r	supportedrhrmethodrs      rtest_auth_functionzSMTPSimTests.test_auth_functions7g&		&KKM
MM*%"	?III!!)"2"29"=>	?"
	I	2	
||D$))3>,3,D,DF		% +3A;(	4= 9??#4#<#<S##FFyyGD&,AB  'IJ

	
	

	
			
	
sE3CE	EEE	c8tjt|jdtj
}|j
\}}|j|d|jd|j|j|jd|j|jt|j|jd|j|j|jd|j|jy)Nrrrr')r/rwr@r1rrrr6rr*rrreehlo_or_helo_if_neededrrcodemessages    rtest_quit_resets_greetingz&SMTPSimTests.test_quit_resets_greetings||D$))+6$+$<$<>		
gs#

fd112		!4!45T499%!4!45##%

fd112		rctjt|j5}|j	\}}|j|dddd|j
tjjdtjt|j5}|jddd|j
tj|jdy#1swYxYw#1swYAxYw)Nrsfoo)
r/rwr@r1rr6r[rWrrrss    rtest_with_statementz SMTPSimTests.test_with_statements
\\$		
*	(d IIKMD'T3'	(	
'88$))VL
\\$		
*	dJJL	'88$))VL
	(	(		s&C'"C3'C03C<c|jtj5}tjt|j
5}|j
d|jj_	dddddd|jjjd|j|jjdy#1swY^xYw#1swYbxYw)Nz421 QUIT FAILEDsQUIT FAILED)r[r/rrwr@r1rr"rrr6rrr)rerrorrs   r test_with_statement_QUIT_failurez-SMTPSimTests.test_with_statement_QUIT_failures


w<<
=	IdDII.
I$		7H		&&4
I	I	
22C833^D	
I
I	I	Is#%C,C1CC	CC#ctjt|jdtj
}|j
d|jj_	d|jj_
|jtj5|jdddddd|j|jy#1swY%xYw)Nrrz451 Requested action abortedTrrtest message)r/rwr@r1rrrr"rrrr[SMTPSenderRefusedrrOrRrs  rtest__rest_from_mail_cmdz%SMTPSimTests.test__rest_from_mail_cmds||D$))K$+$<$<>		/M		,,0		)


w88
9	;MM&'>:	;$))$	;	;sCCctjt|jdtj
}|j
d|jj_	|jtj5|jdddddd|j|j|j|jjj dy#1swYUxYw)Nrrz421 closing connectionrrr~r)r/rwr@r1rrrr"rrr[rrrOrRr6rrs  rtest_421_from_mail_cmdz#SMTPSimTests.test_421_from_mail_cmds||D$))K$+$<$<>		/G		,


w88
9	;MM&'>:	;$))$//::A>	;	;sC((C1cFtjt|jdtj
}|j
ddg|jj_	|jtj5}|jdgddddd|j|j|j|jjj d|j#j$j&dd	d
iy#1swYxYw)Nrrz250 accepted421 closingr)rFrankGeorger~rr)rzsclosing)r/rwr@r1rrrr"rrr[SMTPRecipientsRefusedrrOrRr6rassertDictEqualrr)rrr&s   rtest_421_from_rcpt_cmdz#SMTPSimTests.test_421_from_rcpt_cmds||D$))K$+$<$<>		0>
/N		,


w<<
=	PMM&">O	P$))$//::A>Q[[--a07<M2NO		P	PsDD cGddt}||j_tjt
|jdtj}|j|jtj5|jddgdddd|j|j|j|jj j"dy#1swYUxYw)	NceZdZfdZxZS)=SMTPSimTests.test_421_from_data_cmd.<locals>.MySimSMTPChannelcx|j|jk(r|jdyt|y)Nr)rDATArrr)rrs rrzNSMTPSimTests.test_421_from_data_cmd.<locals>.MySimSMTPChannel.found_terminators*??dii/IIm,G,.r)rrrsrtrrrs@rMySimSMTPChannelrs

/
/rrrrzJohn@foo.orgz
Sally@foo.orgr~r)rr"r
r/rwr@r1rrrr[
SMTPDataErrorrrOrRr6rr)rrrs   rtest_421_from_data_cmdz#SMTPSimTests.test_421_from_data_cmds	/~	/#3		||D$))K$+$<$<>		


w44
5	MMM.?*;^L	M$))$//::A>	M	MsC..C7c	tjt|jdtj
}|j
|j|j|j|j|j|jd|jtj|jdddddg	|jtj|j dddg
y)Nrrsmtputf8rrrrhrgrooptions)r/rwr@r1rrrrrr+
does_esmtpr,rer[SMTPNotSupportedErrorrrrs  r4test_smtputf8_NotSupportedError_if_no_server_supportzASMTPSimTests.test_smtputf8_NotSupportedError_if_no_server_supports||$))K,,.	


#		(z23))MMGR
.K		M	
))IIv'D		Frc,tjt|jdtj
}|j
|j|jt|jddd|jt|jdy)NrrAliceuBöbruÄlice)r/rwr@r1rrrrr[UnicodeEncodeErrorrrrs  r"test_send_unicode_without_SMTPUTF8z/SMTPSimTests.test_send_unicode_without_SMTPUTF8#sh||$))K,,.	


#,dmmWfbQ,diiBrc`t}d|d<d|d<d|d<tjt|jdt
j}|j|j|jtj5|j|dddy#1swYyxYw)	Nrar+r;r,Nudge nudge, wink, wink ὠ9Subjectrr)rr/rwr@r1rrrrr[rr&)rrrs   r9test_send_message_error_on_non_ascii_addrs_if_no_smtputf8zFSMTPSimTests.test_send_message_error_on_non_ascii_addrs_if_no_smtputf8+sn-FD	:I||$))K,,.	


#


w<<
=	#c"	#	#	#s	B$$B-c(tjt|jdtj
}|j
|jt}tjjd|d<tjjd|d<|j|j|i|j|jj dd|j|jj d	d
gy)Nrr)uMichaëlmichael@example.comr+)uRenérene@example.comr,rrrr)r/rwr@r1rrrrrr"utils
formataddrrr&r6r"r)rrrus   r1test_name_field_not_included_in_envelop_addressesz>SMTPSimTests.test_name_field_not_included_in_envelop_addresses9s||$))K,,.	


#.++001TU../LM
T..w7<--f57LM--e47I6JKrN)rrrsrtr2r4rr/rr=rErIrRrUr`rrequires_hashdigestrcrerprvrxr|rrrrrrrrrrrrrs$	=,
 GG((^''t<=(^''t<=,
ME%?	P? F C#
Lrrc$eZdZdZdZ		ddZy)SimSMTPUTF8Serverc\ddg|_tjj|g|i|y)Nrg8BITMIME)rr
rrrs   rrzSimSMTPUTF8Server.__init__Ks/!+J7
!!$444rcx|j|j||||j|j|_y)Nrenable_SMTPUTF8)r
rrrrr
s   rrz!SimSMTPUTF8Server.handle_acceptedRs; ..  $d)) 00/
rNcX||_||_||_||_||_||_yr)	last_peer
last_mailfromlast_rcpttoslast_messagelast_mail_optionslast_rcpt_options)rrrrrrorcpt_optionss       rrz!SimSMTPUTF8Server.process_messageYs1%# !-!-r)NN)rrrsrtrrrrrrrrIs5
KOJN.rrc4eZdZdZdZdZdZdZdZdZ	y)SMTPUTF8SimTestsNctj|_tj|_tjt_tj|_	tj|_
ttdfddd|_
|jjjd|_|j|j|jf}tj t"||_|j$j'|jj)|jj+y)NrrFTrrr)r	rrr0rrrrrrrrr@r"rr1rrrrrrrs  rr2zSMTPUTF8SimTests.setUpgs*::<"NN$,,!)
#//+%tQi276:<	II$$00215	YY

t?	&&.>YO	




rc0|jt_|jj	|j
j
tj|j|`	|jtj|jyrr!rs rr4zSMTPUTF8SimTests.tearDown{r"rc:tjt|jdtj
}|j
|j|j|j|j|j|jdy)Nrrr)r/rwr@r1rrrrrr+rrers  r$test_test_server_supports_extensionsz5SMTPUTF8SimTests.test_test_server_supports_extensionssd||$))K,,.	


#		(

j12rcdjd}tjt|jdt
j}|j|j|jdd|ddg	|j|jjd|j|jjdg|j|jj||jd|jj |jd|jj |j|jj"gy)
N$¡a test message containing unicode!rrruJőhnuSállyrhrgr)rr/rwr@r1rrrrrr6r"rrrrrrrQs   r,test_send_unicode_with_SMTPUTF8_via_sendmailz=SMTPUTF8SimTests.test_send_unicode_with_SMTPUTF8_via_sendmails299'B||$))K,,.	


#

gx$3Z#@		B00'://(<//3

otyy'B'BC

j$))"="=>44b9rc~djd}tjt|jdt
j}|j|j|j|j|jdddgd	|j|jd
d	|j|j|d	|j|jjd|j|jj d
g|j|jj"||j%d|jj&|j%d|jj&|j|jj(gy)NrrrruJőrhrgrruJános)rr/rwr@r1rrrrrr6rrcptrr"rrrrrrrQs   r1test_send_unicode_with_SMTPUTF8_via_low_level_APIzBSMTPUTF8SimTests.test_send_unicode_with_SMTPUTF8_via_low_level_APIsB299'B||$))K,,.	


#		IIeoz%BIC		
8,l;1|400%8//(<//3

otyy'B'BC

j$))"="=>44b9rcJt}d|d<d|d<d|d<|jdtjd}t	j
t|jd	tj
}|j|j|j|j|i|j|jjd|j|jj dg|j|jj"j%||j'd|jj(|j'd
|jj(|j|jj*gy)Nrar+r;r,rru1oh 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?
            rrufőo@bar.comrhrg)rset_contenttextwrapdedentr/rwr@r1rrrrr6r&r"rrrrrrr)rrr9rs    r2test_send_message_uses_smtputf8_if_addrs_non_asciizCSMTPUTF8SimTests.test_send_message_uses_smtputf8_if_addrs_non_asciis<n-FD	:I	MN??	$	||$))K,,.	


#**3/400.A//*>//668(C

otyy'B'BC

j$))"="=>44b9r)
rrrsrtrSr2r4rrrrrrrrrcs%G(	=3
::&:rrspsudoesnotexistr)eolceZdZdZy)!SimSMTPAUTHInitialResponseChannelc|j}|djdk(r,t|dk(r|dtk(r|j	dy|j	dy)Nrplainrprz235 Okz571 Bad authentication)rrrEXPECTED_RESPONSEr)rrrs   rrz+SimSMTPAUTHInitialResponseChannel.smtp_AUTHsWyy{7==?g%4yA~7//IIh'		*+rN)rrrsrtrrrrrrs,rrceZdZeZy) SimSMTPAUTHInitialResponseServerN)rrrsrtrr
rrrrrs5Mrrc$eZdZdZdZdZdZy)SMTPAUTHInitialResponseSimTestsctj|_tj|_tjt_tj|_	tj|_
ttdfdd|_
|jjjd|_|j|j|jf}tj t"||_|j$j'|jj)|jj+yr)r	rrr0rrrrrrrrr@r"rr1rrrrrrrs  rr2z%SMTPAUTHInitialResponseSimTests.setUps*::<"NN$,,!)
#//+4
1ID:	II$$00215	YY

t?	&&.>YO	




rc0|jt_|jj	|j
j
tj|j|`	|jtj|jyrr!rs rr4z(SMTPAUTHInitialResponseSimTests.tearDownr"rc|jjdtjt|j
dtj}|jdd|jy)Nr?rrpsudoesnotexist)
r"rr/rwr@r1rrrCrrs  r%testAUTH_PLAIN_initial_response_loginzESMTPAUTHInitialResponseSimTests.testAUTH_PLAIN_initial_response_loginsL		l+||D$))K$+$<$<>

5.)

rcB|jjdtjt|j
dtj}d|_d|_	|jd|j\}}|j|j|dy)Nr?rrrrrrA)r"rr/rwr@r1rrrrrP
auth_plainrr6)rrrtresponses    r$testAUTH_PLAIN_initial_response_authzDSMTPAUTHInitialResponseSimTests.testAUTH_PLAIN_initial_response_auth
st		l+||D$))K$+$<$<>	&
7DOO<h

s#rN)rrrsrtr2r4rrrrrrrs&	=$rr__main__)Fremail.mime.textr"
email.messageremail.base64mimer
encode_base64email.utilsrkrr0r/rrfrrrrrrrtestrrtest.supportrrr	r

unittest.mockrrr
requires_working_socketr@platformrSMTPChannelr*r,TestCaservryrrrrrUr_rrrzrrrr	Exceptionrrrrrrrrrrrrrmainrrr<module>rs*
&9
		

%'&)! t,<<8
$/E!,`6`6F|X%6%6
/|X%6%6/,>
6	
3S8,,Sj)**)60H--08=**=&;x((;@#+#,'/
	
2;+,EF,.
	
)	(uU&&upE$$6@L8$$@LF
.
.4l:x((l:^""8bA
,
,6}6.$h&7&7.$bzHMMOr