403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_smtplib.cpython-313.pyc
�

��i����^�SSKrSSKrSSKJr SSKJr SSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJrJr SSKJr SSKJr SSKJr SSKJr SS	KJ r  SS
KJ!r! \RD"SS9 \RFr#\RHS
:XaSr%\%\ RLl%Sr'"SS5r("SS\(\RR5r*"SS\(\RR5r+Sr,Sr-Sr."SS\RR5r/"SS\RR5r0"SS\RR5r1"SS \RR5r2"S!S"\RR5r3S#S$S%S&.r4S'r5S(r6S)S*/S+/S,.r7"S-S.\85r9"S/S0\ RL5r:"S1S2\ Rv5r<"S3S4\RR5r="S5S6\<5r>"S7S8\RR5r?\"S9S:S;9r@"S<S=\:5rA"S>S?\<5rB"S@SA\RR5rC\DSB:Xa\R�"5 gg)C�N)�EmailMessage)�body_encode)�support�mock_socket)�hashlib_helper)�
socket_helper)�threading_helper)�asyncore)�smtpd)�MockT)�module�darwinc��g�N���selfs �&C:\Python313\\Lib\test\test_smtplib.py�handle_exptr%s���c���UR5 UR5 UR5up4SnU(aRUS:�aL[R"/U//5upgnU(aUR	U5n	XSnUS-nU(aUS:�aMLUR5 UR5 UR5 g![a N-f=f!UR5 UR5 f=f)Ni�r�)�listen�set�accept�select�send�close�TimeoutError)
�evt�buf�serv�conn�addr�n�r�w�e�sents
          r�serverr**s����K�K�M��G�G�I���[�[�]�
��
���a�!�e��m�m�B����3�G�A�!���y�y��~���%�j��
��F�A�
�a�!�e�	
�
�
���
�
�����	���
��
��	
�
�
�����	�s/�C�AC�C�
C
�
C�C
�
C�"C2c�b�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrg)�GeneralTests�@c�0�[[lSUlg)N�)r�smtplib�socket�portrs r�setUp�GeneralTests.setUpBs��$�����	rc�"�[[lgr)r1r0rs r�tearDown�GeneralTests.tearDownFs	����rc�X�SnSnURU[R"U55 g)Nzabc
.jkl
foo
..bluezabc
..jkl
foo
...blue)�assertEqualr0�	quotedata)r�teststr�expecteds   r�
testQuoteData�GeneralTests.testQuoteDataKs'��-��3������7�#4�#4�W�#=�>rc��[R"S5 UR[UR5nUR5 g)N�220 Hola mundo�r�
reply_with�client�HOSTr2r�rrCs  r�
testBasic1�GeneralTests.testBasic1Ps.�����0�1����T�4�9�9�-�����rc���[R"S5 UR[URSS9nURURS5 UR5 g)Nr@)z	127.0.0.1i�M)�source_address)rrBrCrDr2r9rIrrEs  r�testSourceAddress�GeneralTests.testSourceAddressVsP�����0�1����T�4�9�9�,?��A������.�.�0D�E����rc��[R"S5 UR[<SUR<35nUR5 g)Nr@�:rArEs  r�
testBasic2�GeneralTests.testBasic2^s1�����0�1�����d�i�i�8�9�����rc���[R"S5 UR[URSS9nURURS5 UR5 g)Nr@�testhost)�local_hostname)rrBrCrDr2r9rRrrEs  r�testLocalHostName�GeneralTests.testLocalHostNamedsH�����0�1����T�4�9�9�Z��H������.�.�
�;����rc��[R"S5 UR[R"55 [R"S5 UR[R"5S5 UR
[UR5n[R"S5 URURR5S5 UR5 g![R"S5 f=f)Nr@�)rrB�assertIsNone�getdefaulttimeout�setdefaulttimeoutr9rCrDr2�sock�
gettimeoutrrEs  r�testTimeoutDefault�GeneralTests.testTimeoutDefaultks������0�1����+�7�7�9�:��%�%�b�)�����6�6�8�"�=�	0��[�[��t�y�y�1�F��)�)�$�/�������/�/�1�2�6������
�)�)�$�/�s�7 C(�(Dc��[R"S5 UR[R"55 [R
"S5 UR
[URSS9n[R
"S5 URURR55 UR5 g![R
"S5 f=f�Nr@rV��timeout)rrBrWr1rXrYrCrDr2rZr[rrEs  r�testTimeoutNone�GeneralTests.testTimeoutNonews������0�1����&�2�2�4�5�� � ��$�	+��[�[��t�y�y�$�[�?�F��$�$�T�*����&�+�+�0�0�2�3������
�$�$�T�*�s�C�Cc���[R"S5 UR[5 UR	[
URSS9 SSS5 g!,(df   g=f)Nr@rr`)rrB�assertRaises�
ValueErrorrCrDr2rs r�testTimeoutZero�GeneralTests.testTimeoutZero�sA�����0�1�
�
�
�z�
*��K�K��d�i�i��K�3�+�
*�
*�s� A�
A#c���[R"S5 UR[URSS9nURURR5S5 UR5 gr_)	rrBrCrDr2r9rZr[rrEs  r�testTimeoutValue�GeneralTests.testTimeoutValue�sO�����0�1����T�4�9�9�b��9��������/�/�1�2�6����rc��[R"S5 UR5nURS5 [R
"5nUR
[UR5 SSS5 UR5 [R"S[R5nURWR5U5 g!,(df   Nd=f)N�220 Hello worldrz	^connect:�rrBrC�set_debuglevelr�captured_stderr�connectrDr2r�re�compile�	MULTILINE�assertRegex�getvalue�rrC�stderrr<s    r�test_debuglevel�GeneralTests.test_debuglevel�s������1�2���������a� �
�
$�
$�
&�&��N�N�4����+�'������:�:�l�B�L�L�9��������*�H�5�	'�
&���
!C�
Cc��[R"S5 UR5nURS5 [R
"5nUR
[UR5 SSS5 UR5 [R"S[R5nURWR5U5 g!,(df   Nd=f)Nrm�z#^\d{2}:\d{2}:\d{2}\.\d{6} connect: rnrws    r�test_debuglevel_2�GeneralTests.test_debuglevel_2�s������1�2���������a� �
�
$�
$�
&�&��N�N�4����+�'������:�:�D� �l�l�,��������*�H�5�'�
&�r{)r2N)�__name__�
__module__�__qualname__�__firstlineno__r3r6r=rFrJrNrSr\rbrgrjryr~�__static_attributes__rrrr,r,@sC��� �
?�
����
�	�4�
�6�	6rr,c�,�\rSrSr\R
rSrg)�SMTPGeneralTests�rN)r�r�r�r�r0�SMTPrCr�rrrr�r��s��
�\�\�Frr�c�^�\rSrSr\R
r\R"\	"\
S5S5S5rU4SjrSr
U=r$)�LMTPGeneralTests��AF_UNIXz test requires Unix domain socketc�@�Sn[R"S5 URXR5n[R"S5 URURR55 UR5 g![R"S5 f=f)N�!/some/local/lmtp/delivery/programrm)	rrBrCr2rYrWrZr[r)r�
local_hostrCs   r�"testUnixDomainSocketTimeoutDefault�3LMTPGeneralTests.testUnixDomainSocketTimeoutDefault�sq��8�
����1�2�	0��[�[��Y�Y�7�F��)�)�$�/����&�+�+�0�0�2�3������
�)�)�$�/�s�B�Bc�>�[TU]5 SnUR[5 UR	USS9 SSS5 g!,(df   g=f)Nr�rr`)�superrgrerfrC)rr��	__class__s  �rrg� LMTPGeneralTests.testTimeoutZero�s=���
���!�8�
�
�
�
�z�
*��K�K�
�A�K�.�+�
*�
*�s�A�
Ar)r�r�r�r�r0�LMTPrC�unittest�
skipUnless�hasattrr1r�rgr��
__classcell__�r�s@rr�r��s>���
�\�\�F�
������3�5W�X��Y��/�/rr�c�4�UR5 [[S5(a[RnO[R
nSn[R(aeUS:�a_U"S[R5 UR5(aUR5 O"US-n[R(aUS:�aM_UR5(d&[R"S5 UR5 [R"5 UR5 g![a Nmf=f!UR5(d&[R"S5 UR5 [R"5 UR5 f=f)N�polli�r�{�G�z�?rg�?)
rr�rr
�poll2r��
socket_map�is_setrr�time�sleep�	close_all)r"�serv_evt�
client_evt�poll_funr%s     r�debugging_serverr��s���L�L�N���6�6�"�"��~�~�H��}�}�H����!�!�a�!�e��T�8�.�.�/�� � �"�"��
�
���
��F�A��!�!�a�!�e�� � �"�"��J�J�s�O��J�J�L�����������
��
��� � �"�"��J�J�s�O��J�J�L���������s1�BD%�!D5�" D%�%
D2�/D5�1D2�2D5�5A"Fz&---------- MESSAGE FOLLOWS ----------
z&------------ END MESSAGE ------------
c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrg)�DebuggingServerTests��Nc��[R"5Ul[RUl[R[l[RUl	[R"5UlUR[l[R"5Ul[R"5Ul["R$Ul[R"5["l["R("[*S4SSS9UlUR,RR/5SSuUlUlUR,URUR 4n[R4"[6US9UlUR8R;5 URR=5 URR?5 g)Nr��nowhere���T��decode_datar}��target�args) r	�threading_setup�
thread_keyr1�getfqdn�real_getfqdnr�sys�stdout�
old_stdout�io�StringIO�output�	threading�Eventr�r�r�DEBUGSTREAM�old_DEBUGSTREAM�DebuggingServerrDr"�getsockname�hostr2�Threadr��thread�start�wait�clear�r�	serv_argss  rr3�DebuggingServerTests.setUp�s,��*�:�:�<���"�N�N���$�,�,����*�*����k�k�m����[�[��
�!���)��
�#�/�/�+���$�0�0����K�K�M����)�)�4��)�_�6:�<��	� $�y�y�/�/�;�;�=�b�q�A���	�4�9��Y�Y��
�
�t���?�	��&�&�.>�Y�O���������	
�
�
�����
�
���rc���UR[lURR	5 UR
R
5 [R"UR5 UR[l[RR5 UR [lU?	UR#5 [R$"UR&6 gr)r�r1r�r�rr�r�r	�join_threadr�r�r�r�rr�rr��
doCleanups�threading_cleanupr�rs rr6�DebuggingServerTests.tearDowns����*�*����������
�
�����$�$�T�[�[�1��_�_��
�
�����!� �0�0����K������*�*�D�O�O�<rc��URR5n[R"SSU[R[R
-S9$)Nz(.*?)^X-Peer:\s*\S+\n(.*)z\1\2)�flags)r�rvrr�subrt�DOTALL)r�test_outputs  r�get_output_without_xpeer�-DebuggingServerTests.get_output_without_xpeers>���k�k�*�*�,���v�v�2�G�!����b�i�i�)?�A�	Arc��[R"[URS[R
S9nUR
5 g�N�	localhost�rRra�r0r�rDr2r�LOOPBACK_TIMEOUT�quit�r�smtps  r�	testBasic�DebuggingServerTests.testBasic�,���|�|�D�$�)�)�K�$+�$<�$<�>���	�	�rc�$�[R"5n[R"URUR
S[RURU4S9nURUR5 URURURU45 URURS5 UR5 g![a8nUR[R :XaUR#SU-5 eSnAff=f)Nr�)rRrarIzcouldn't bind to source port %d)r�find_unused_portr0r�r�r2rr��
addCleanuprr9rIrRr��OSError�errno�
EADDRINUSE�skipTest)r�src_portr�r(s    rrJ�&DebuggingServerTests.testSourceAddress s��� �1�1�3��	��<�<��	�	�4�9�9�[�(/�(@�(@�04�	�	�8�/D�F�D�
�O�O�D�J�J�'����T�0�0�4�9�9�h�2G�H����T�0�0�+�>��I�I�K���	��w�w�%�*�*�*��
�
�?�(�J�K���	�s�B5C
�
D�3D
�
Dc��[R"[URS[R
S9nUR
UR5 SnURUR5U5 UR5 g�Nr�r���sOK)r0r�rDr2rr�r�rr9�noopr��rr�r<s   r�testNOOP�DebuggingServerTests.testNOOP0�W���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����������h�/��	�	�rc��[R"[URS[R
S9nUR
UR5 SnURUR5U5 UR5 gr�)r0r�rDr2rr�r�rr9�rsetr�r�s   r�testRSET�DebuggingServerTests.testRSET8r�rc��[R"[URS[R
S9nUR
UR5 SnURUR5U5 UR5 g)Nr�r�)r�s
SIZE 33554432
HELP)r0r�rDr2rr�r�rr9�ehlor�r�s   r�testELHO�DebuggingServerTests.testELHO@sW���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#�2���������h�/��	�	�rc�&�[R"[URS[R
S9nUR
UR5 SnURS5 URUR5U5 UR5 g)Nr�r�)i�sEXPN not implemented�EXPN)r0r�rDr2rr�r�r�putcmdr9�getreplyr�r�s   r�testEXPNNotImplemented�+DebuggingServerTests.testEXPNNotImplementedIsc���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#�1�����F���������(�3��	�	�rc��[R"[URS[R
S9nUR
UR5 UR[5nURS5 SSS5 URS[WR55 UR5 g!,(df   ND=f)Nr�r�zhelo
X-INJECTED�prohibited newline characters)r0r�rDr2rr�r�rrerfr�assertIn�str�	exceptionr�)rr��excs   r�&test_issue43124_putcmd_escapes_newline�;DebuggingServerTests.test_issue43124_putcmd_escapes_newlineSs���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#�
�
�
�z�
*�c��K�K�*�+�+��
�
�5�s�3�=�=�7I�J��	�	��+�
*�s�$B4�4
Cc�H�[R"[URS[R
S9nUR
UR5 SnURURS5U5 URURS5U5 UR5 g)Nr�r�)�s>Cannot VRFY user, but will accept message and attempt delivery�nobody@nowhere.com)r0r�rDr2rr�r�rr9�vrfy�verifyr�r�s   r�testVRFY�DebuggingServerTests.testVRFY]sw���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#�2��������#7�8�(�C�������%9�:�H�E��	�	�rc�$�[R"[URS[R
S9nUR
UR5 UR5 SnURUR5U5 UR5 g)Nr�r�)i�sDuplicate HELO/EHLO)r0r�rDr2rr�r�r�helor9r�r�s   r�testSecondHELO�#DebuggingServerTests.testSecondHELOgsb���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��	�	��0���������h�/��	�	�rc��[R"[URS[R
S9nUR
UR5 URUR5S5 UR5 g)Nr�r�s@Supported commands: EHLO HELO MAIL RCPT DATA RSET NOOP QUIT VRFY)r0r�rDr2rr�r�rr9�helpr�r�s  r�testHELP�DebuggingServerTests.testHELPrsY���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��������'G�	H��	�	�rc�.�Sn[R"[URS[R
S9nUR
UR5 URSSU5 [R"S5 UR5 URR5 URR5 UR R#5 [$<U<S[&<3nUR)UR R+5U5 g)N�A test messager�r��John�Sallyr��
�r0r�rDr2rr�r�r�sendmailr�r�r�r�rr�r�r��flush�	MSG_BEGIN�MSG_ENDr9rv�r�mr��mexpects    r�testSend�DebuggingServerTests.testSendzs������|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��
�
�f�g�q�)�	
�
�
�4���	�	���������
�
���������� )�1�g�6��������-�-�/��9rc�L�Sn[R"[URS[R
S9nUR
UR5 URSSU5 [R"S5 UR5 URR5 URR5 UR R#5 [$<UR'S5<S[(<3nUR+UR R-5U5 g)	NsA test messager�r�rr r��asciir!)r0r�rDr2rr�r�rr#r�r�r�r�rr�r�r�r$r%�decoder&r9rvr's    r�testSendBinary�#DebuggingServerTests.testSendBinary�s������|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��
�
�f�g�q�)��
�
�4���	�	���������
�
���������� )�1�8�8�G�+<�g�F��������-�-�/��9rc�.�Sn[R"[URS[R
S9nUR
UR5 URSSU5 [R"S5 UR5 URR5 URR5 UR R#5 [$<U<S[&<3nUR)UR R+5U5 g)Nz.A test
.mes.sage.r�r�rr r�r!r"r's    r�testSendNeedingDotQuote�,DebuggingServerTests.testSendNeedingDotQuote�s���!���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��
�
�f�g�q�)��
�
�4���	�	���������
�
���������� )�1�g�6��������-�-�/��9rc��Sn[R"[URS[R
S9nUR
UR5 UR[5nURSSU5 SSS5 URS[WR55 [R"S5 UR!5 ["R$R'5nUR)SU5 g!,(df   N�=f)	N�wazzuuup
linetwoz
hi
X-INJECTEDr��	hi@me.com�
you@me.comz2prohibited newline characters: ehlo hi\nX-INJECTEDr�z
X-INJECTED)r0r�rDr2rr�r�rrerfr#rr	r
r�r�r�rr�rv�assertNotIn)rr(r�r�debugouts     r�$test_issue43124_escape_localhostname�9DebuggingServerTests.test_issue43124_escape_localhostname�s���
 ���|�|�D�$�)�)�<L�$+�$<�$<�>������
�
�#�
�
�
�z�
*�c��M�M�+�|�Q�7�+��
�
�A���
�
��	
�
	
�
�
�4���	�	���$�$�-�-�/������x�0�+�
*�s�&C>�>
Dc���Sn[R"[URS[R
S9nUR
UR5 URSSU5 UR[5nURSSS/5 SSS5 [WR5nURSU5 URS	U5 [R "S
5 UR#5 [$R&R)5nUR+SU5 UR+SU5 UR+S
U5 UR+SU5 g!,(df   N�=f)Nr5r�r�r6r7zX-OPTION
X-INJECTED-1zX-OPTION2
X-INJECTED-2rz.X-OPTION\nX-INJECTED-1 X-OPTION2\nX-INJECTED-2r�zX-OPTIONz	X-OPTION2zX-INJECTED-1zX-INJECTED-2)r0r�rDr2rr�r�rr#rerf�mailr	r
rr�r�r�rr�rvr8)rr(r�r�msgr9s      r�test_issue43124_escape_options�3DebuggingServerTests.test_issue43124_escape_options�s��
 ���|�|��$�)�)�K��,�,�.��	
����
�
�#��
�
�k�<��3�
�
�
�z�
*�c��I�I�k�$<�>W�#X�Y�+��#�-�-� ���
�
�5�s�;��
�
�H�#�N��
�
�4���	�	���$�$�-�-�/������X�.�����h�/������2������2�+�
*�s�9E�
E*c���Sn[R"[URS[R
S9nUR
UR5 URSSU5 [R"S5 UR5 URR5 URR5 UR R#5 [$<U<S[&<3nUR)UR R+5U5 [,R.R+5n[0R2"S[0R45nUR7XE5 g)	Nrr�r�z<>r r�r!z^sender: <>$)r0r�rDr2rr�r�rr#r�r�r�r�rr�r�r�r$r%r&r9rvrr�rrrsrtru)rr(r�r)r9�senders      r�testSendNullSender�'DebuggingServerTests.testSendNullSender�s������|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��
�
�d�G�Q�'��
�
�4���	�	���������
�
���������� )�1�g�6��������-�-�/��9��$�$�-�-�/�����N�B�L�L�9������*rc��[RRRS5n[R
"[URS[RS9nURUR5 URUSSS9 [R"S5 UR5 UR R#5 UR$R'5 UR(R+5 UR-5nUS	[.<UR15<S	[2<3nUR5X45 g)
Nrr�r�rr ��	from_addr�to_addrsr��X-Peerr!)�email�mime�text�MIMETextr0r�rDr2rr�r�r�send_messager�r�r�r�rr�r�r�r$r�r%�	as_stringr&r9)rr(r�r�r)s     r�testSendMessage�$DebuggingServerTests.testSendMessage�s����J�J�O�O�$�$�%5�6���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����!�v���@��
�
�4���	�	���������
�
����������
�3�3�5��
�h�K� )�1�;�;�=�'�B������.rc�$�[RRRS5nSUS'SUS'SUS'SUS	'[R
"[URS
[RS9nURUR5 URU5 [R"S5 UR5 UR!US	S5 UR"R%5 UR&R)5 UR*R-5 UR/5nUS
	US		[0<UR35<S[4<3nUR!X45 [6R8R;5n[<R>"S[<R@5nURCXV5 SHHn[<R>"SREU5[<R@5nURCXX5 MJ g)Nr�foo@bar.com�Fromr�To�Sally, Fred�CC�?John Root <root@localhost>, "Dinsdale" <warped@silly.walks.com>�Bccr�r�r�rIr!�^sender: foo@bar.com$)rr �Fredzroot@localhostzwarped@silly.walks.com�^recips: .*'{}'.*$)#rJrKrLrMr0r�rDr2rr�r�rrNr�r�r�r9r�rr�r�r�r$r�r%rOr&rr�rvrrrsrtru�format�	rr(r�r�r)r9rBr$�to_addrs	         r�testSendMessageWithAddresses�1DebuggingServerTests.testSendMessageWithAddressess����J�J�O�O�$�$�%5�6��!��&�	���$����$��T��%���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����!���
�
�4���	�	������5��$?�	@�	
�������
�
�����������3�3�5��
�h�K�
�e�H� )�1�;�;�=�'�B������.��$�$�-�-�/�����3�R�\�\�B������*�/�D��j�j�!6�!=�!=�d�!C�!#���/�G����X�/�	/rc���[RRRS5nSUS'SUS'[R
"[URS[RS9nURUR5 URU5 [R"S5 UR5 UR R#5 UR$R'5 UR(R+5 UR-5nUS		[.<UR15<S
[2<3nUR5X45 [6R8R;5n[<R>"S[<R@5nURCXV5 SHHn[<R>"S
REU5[<R@5nURCXX5 MJ g)NrrSrT�John, DinsdalerUr�r�r�rIr!rZ�r�Dinsdaler\�#rJrKrLrMr0r�rDr2rr�r�rrNr�r�r�r�rr�r�r�r$r�r%rOr&r9rr�rvrrrsrtrur]r^s	         r� testSendMessageWithSomeAddresses�5DebuggingServerTests.testSendMessageWithSomeAddresses(sX���J�J�O�O�$�$�%5�6��!��&�	�"��$���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����!���
�
�4���	�	���������
�
�����������3�3�5��
�h�K� )�1�;�;�=�'�B������.��$�$�-�-�/�����3�R�\�\�B������*�(�D��j�j�!6�!=�!=�d�!C�!#���/�G����X�/�)rc�L�[RRRS5nSUS'SUS'[R
"[URS[RS9nURUR5 URUSS	S
9 [R"S5 UR5 UR R#5 UR$R'5 UR(R+5 UR-5nUS	[.<UR15<S
[2<3nUR5X45 [6R8R;5n[<R>"S[<R@5nURCXV5 SHHn[<R>"SREU5[<R@5nURGXX5 MJ [<R>"S[<R@5n	URCXY5 g)NrrSrTrcrUr�r�zjoe@example.comzfoo@example.netrFr�rIr!z^sender: joe@example.com$rdr\z^recips: .*'foo@example.net'.*$)$rJrKrLrMr0r�rDr2rr�r�rrNr�r�r�r�rr�r�r�r$r�r%rOr&r9rr�rvrrrsrtrur]�assertNotRegex)
rr(r�r�r)r9rBr$r_�recips
          r�%testSendMessageWithSpecifiedAddresses�:DebuggingServerTests.testSendMessageWithSpecifiedAddressesEs����J�J�O�O�$�$�%5�6��!��&�	�"��$���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����!�'8�CT��U��
�
�4���	�	���������
�
�����������3�3�5��
�h�K� )�1�;�;�=�'�B������.��$�$�-�-�/�����7����F������*�(�D��j�j�!6�!=�!=�d�!C�!#���/�G�����2�)��
�
�=�r�|�|�L������)rc���[RRRS5nSUS'SUS'SUS'[R
"[URS[RS	9nURUR5 URU5 [R"S
5 UR5 UR R#5 UR$R'5 UR(R+5 UR-5nUS	[.<UR15<S[2<3nUR5X45 [6R8R;5n[<R>"S
[<R@5nURCXV5 SHHn[<R>"SREU5[<R@5nURCXX5 MJ g)NrzBernard, BiancarTz#the_rescuers@Rescue-Aid-Society.com�SenderrcrUr�r�r�rIr!z-^sender: the_rescuers@Rescue-Aid-Society.com$rdr\rfr^s	         r�testSendMessageWithMultipleFrom�4DebuggingServerTests.testSendMessageWithMultipleFromdsa���J�J�O�O�$�$�%5�6��%��&�	�;��(��"��$���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����!���
�
�4���	�	���������
�
�����������3�3�5��
�h�K� )�1�;�;�=�'�B������.��$�$�-�-�/�����K�R�\�\�Z������*�(�D��j�j�!6�!=�!=�d�!C�!#���/�G����X�/�)rc�(�[RRRS5nSUS'SUS'SUS'SUS	'S
US'SUS
'SUS'SUS'[R
"[URS[RS9nURUR5 URU5 [R"S5 UR5 UR R#5 UR$R'5 UR(R+5 US		US	UR-5nUS	[.<UR15<S[2<3nUR5X45 [6R8R;5n[<R>"S[<R@5nURCXV5 SHHn[<R>"SREU5[<R@5nURCXX5 MJ g)NrrSrTrrUrVrWrXrY�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�rIr!z^sender: holy@grail.net$)zmy_mom@great.cooker.com�Jeffryr\rfr^s	         r�testSendMessageResent�*DebuggingServerTests.testSendMessageResent�s����J�J�O�O�$�$�%5�6��!��&�	���$����$��T��%��;��-��+��-��A��+��,��,���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#����!���
�
�4���	�	���������
�
����������
�e�H�
�l�O��3�3�5��
�h�K� )�1�;�;�=�'�B������.��$�$�-�-�/�����6����E������*�K�D��j�j�!6�!=�!=�d�!C�!#���/�G����X�/�Lrc��[RRRS5nSUS'SUS'SUS'SUS	'S
US'SUS
'SUS'SUS'SUS'SUS'SUS
'[R
"[URS[RS9nURUR5 UR[5 URU5 SSS5 UR5 g!,(df   N=f)NrrSrTrrUrVrWrXrYrsrtrurvrwrxryrzzThu, 2 Jan 1970 17:42:00 +0000r�r�)rJrKrLrMr0r�rDr2rr�r�rrerfrN�rr(r�s   r�#testSendMessageMultipleResentRaises�8DebuggingServerTests.testSendMessageMultipleResentRaises�s����J�J�O�O�$�$�%5�6��!��&�	���$����$��T��%��;��-��+��-��A��+��,��,��;��-��)��+��C��-���|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#�
�
�
�z�
*����a� �+��
�
��+�
*�s�C/�/
C=)r�r�r�r�r�r2r�r"r�r�r�) r�r�r�r��maxDiffr3r6r�r�rJr�r�r�rrrrrr*r/r2r:r?rCrPr`rgrlrpr|r�r�rrrr�r��s����G��6=� A�
�� ������	��:�&:� :�"1�(3�2+�&/�,"0�H0�:*�>0�<#0�Jrr�c�&�\rSrSrSrSrSrSrg)�NonConnectingTestsi�c���[R"5nUR[RUR5 UR[RUR
S5 g)Nztest msg)r0r�re�SMTPServerDisconnectedr�rr�s  r�testNotConnected�#NonConnectingTests.testNotConnected�sH��
�|�|�~�����'�8�8�$�)�)�D����'�8�8��)�)�Z�	1rc��UR[[RSS5 UR[[RS5 g)Nr��boguszlocalhost:bogus)rer�r0r�rs r�testNonnumericPort�%NonConnectingTests.testNonnumericPort�s6�����'�7�<�<�%�w�	0����'�7�<�<�+�	-rc��[R"5nURUR5 SSS5 g!,(df   g=fr)r0r�rWrZr�s  r�testSockAttributeExists�*NonConnectingTests.testSockAttributeExists�s+���\�\�^�t����d�i�i�(��^�^�s	�;�
A	rN)r�r�r�r�r�r�r�r�rrrr�r��s��1�-�)rr�c�&�\rSrSrSrSrSrSrg)�DefaultArgumentsTestsi�c�
�[5UlSURS'[R"5Ul[SS9URl[5[5sURlURlg)N�Páolo <főo@bar.com>rT)���OK)�return_value)	rr>r0r�r�rr��has_extnr#rs rr3�DefaultArgumentsTests.setUp�sT���>���2�������L�L�N��	��;�7��	�	��15����.��	�	��D�I�I�.rc��SnURRUR5 URRUR5 URURRR
SSSU5 URURRR
SSSU5 g)N)�SMTPUTF8�
BODY=8BITMIMEr�r�r�rNr>r9r#�call_args_list)r�expected_mail_optionss  rrP�%DefaultArgumentsTests.testSendMessage�s��� =���	�	���t�x�x�(��	�	���t�x�x�(�������+�+�:�:�1�=�a�@��C�.�	0�������+�+�:�:�1�=�a�@��C�.�	0rc��S/nSnURRURSSU5 URUS/5 URURRR
SSSU5 g)N�STARTTLS)r�r�r�rr�r�)r�mail_optionsr�s   r�testSendMessageWithMailOptions�4DefaultArgumentsTests.testSendMessageWithMailOptions�so��"�|�� I���	�	���t�x�x��t�\�B�����
�|�4�������+�+�:�:�1�=�a�@��C�.�	0r)r>r�N)r�r�r�r�r3rPr�r�rrrr�r��s��@�0�0rr�c�&�\rSrSrSrSrSrSrg)�BadHELOServerTestsi�c���[[l[R"S5 [R
Ul[R"5Ul	UR[lSUl
g)Ns199 no hello for you!r/)rr0r1rBr�r�r�r�r�r�r2rs rr3�BadHELOServerTests.setUp�sB��$������7�8��*�*����k�k�m����[�[��
���	rc�L�[[lUR[lgr)r1r0r�r�r�rs rr6�BadHELOServerTests.tearDown�s������_�_��
rc��UR[R[R[UR
SS5 g�Nr�r�)rer0�SMTPConnectErrorr�rDr2rs r�testFailingHELO�"BadHELOServerTests.testFailingHELOs+�����'�2�2�G�L�L� �$�)�)�[�!�	=r)r�r�r2N)r�r�r�r�r3r6r�r�rrrr�r��s���%�=rr�c�V�\rSrSrSS\R
-S--S-rSrSrSr	S	r
g
)�TooLongLineTestsis250 OK�.r}�
c��[R"5Ul[RUl[R"5UlUR[l[R"5Ul[R"[R[R5UlURR!S5 ["R$"UR5UlURUR(UR4n[R*"[,US9UlUR.R15 URR35 URR55 g)N�r�)r	r�r�r�r�r�r�r�r�r�r�r r1�AF_INET�SOCK_STREAMrZ�
settimeoutr�	bind_portr2�respdatar�r*r�r�r�r�)r�servargss  rr3�TooLongLineTests.setUps���*�:�:�<����*�*����k�k�m����[�[��
��?�?�$����M�M�&�.�.�&�2D�2D�E��	��	�	���R� �!�+�+�D�I�I�6��	��H�H�d�m�m�T�Y�Y�7���&�&�f�8�D������������
�
�������rc��URR5 UR[l[
R"UR5 U?UR5 [
R"UR6 gr)r r�r�r�r�r	r�r�r�r�r�rs rr6�TooLongLineTests.tearDownsM�����
�
���_�_��
��$�$�T�[�[�1��K������*�*�D�O�O�<rc��UR[R[R[UR
SS5 gr�)rer0�SMTPResponseExceptionr�rDr2rs r�testLineTooLong� TooLongLineTests.testLineTooLong s+�����'�7�7������	�	�;��	;r)r r�r�r2rZr�r�N)r�r�r�r�r0�_MAXLINEr�r3r6r�r�rrrr�r�s0���D�7�#3�#3�3�a�7�8�5�@�H�� =�;rr�zJohn AzSally BzRuth C)�Mr.A@somewhere.com�Ms.B@xn--fo-fka.com�Mrs.C@somewhereesle.com)r��somepasswordz<PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=r�r�r�)zlist-1zlist-2c��\rSrSrSrg)�ResponseExceptioni2rN)r�r�r�r�r�rrrr�r�2s��Drr�c��^�\rSrSrSrSrSrSrSrSr	Sr
SrSrU4Sjr
U4SjrSrSrS	rSS
jrSSjrSSjrSS
jrSrSrSrU4SjrU4SjrU4SjrU4SjrU4SjrSrSrU=r $)�SimSMTPChanneli3Nr�cc�>�SRUVs/sHnSRU5PM sn5Ul/Ul[[
U]"U0UD6 gs snf)N�z	250-{0}
)�joinr]�_extrafeatures�all_received_linesr�r��__init__)r�extra_featuresr��kw�xr�s     �rr��SimSMTPChannel.__init__?sT��� �g�g�/=�?�~�!�m�"�"�1�%�~�?�A���"$���
�n�d�,�d�9�b�9��
@s�Ac�
>�URUR:XaaURRUR5n[S[
U5[RS9 /UlURU5 gURR!UR5 ["TU]I5 g![aGnURUlURUR<SUR<35 SnAgSnAff=f)NzData:)�file� )�
smtp_state�AUTH�_emptystringr��received_lines�print�reprrr��auth_objectr��COMMAND�push�	smtp_code�
smtp_errorr��appendr��found_terminator)r�liner(r�s   �rr��SimSMTPChannel.found_terminatorFs�����?�?�d�i�i�'��$�$�)�)�$�*=�*=�>�D��'�4��:�E�,=�,=�>�"$�D��
A�� � ��&�
����&�&�t�':�':�;�
�� �"��%�
A�"&�,�,����	�	�Q�[�[�!�,�,�?�@�@���
A�s�+B1�1
D�;=C=�=Dc��UR(dURS5 gUR(aSUR;aURS5 gURbURS5 gUR5n[
U5S;aURS5 gSUSR5RS	S
5-n[X5Ul
URUlUR[
U5S:Xa
US
5 gS5 g![a# URSRU55 gf=f)Nz503 Error: send EHLO firstr�z(500 Error: command "AUTH" not recognizedz3503 Bad sequence of commands: already authenticated)rr}z/501 Syntax: AUTH <mechanism> [initial-response]z_auth_%sr�-�_zQ504 Command parameter not implemented: unsupported  authentication mechanism {!r}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_AUTHUs���!�!��I�I�2�3���!�!�V�4�3F�3F�%F��I�I�@�A���"�"�.��I�I�E�
G���y�y�{���t�9�F�"��I�I�G�H��%��Q��
�
��(?�(?��S�(I�I��	�&�t�>�D��
�)�)������C��I��N��a��=��=���	��I�I�7�7=�v�>N�7O�
Q��	�s�D�*E�Ec��U(aXlURS5 OURS5 URUlg)Nz235 Authentication Succeededz&535 Authentication credentials invalid)r�r�r�r�)r�user�valids   r�_authenticated�SimSMTPChannel._authenticatedns0���&*�#��I�I�4�5��I�I�>�?��,�,��rc�j�[R"URS55RS5$)Nr-�utf-8)�base64�decodebytes�encoder.)r�strings  r�_decode_base64�SimSMTPChannel._decode_base64vs'���!�!�&�-�-��"8�9�@�@��I�Irc��UcURS5 gURU5nURS5Gtp4nURXE[S:H5 g![a*nURSR	X&55 SnAgSnAff=f)Nz334 ��=535 Splitting response {!r} into user and password failed: {}r)r�rr�rfr]r��sim_auth)rr��logpassr�r��passwordr(s       r�_auth_plain�SimSMTPChannel._auth_plainys����;��I�I�f���)�)�#�.�G�
�%,�]�]�4�%8�"��(�

����(�1�+�&=�>��	�
��	�	�(�(.��w�(:�<���
�s�A�
B�" B�Bc��UcURS5 g[US5(d(URU5UlURS5 gURU5nUR	URU[
S:H5 U?g)Nz334 VXNlcm5hbWU6�_auth_login_userz334 UGFzc3dvcmQ6r)r�r�rrr�r
)rr�rs   r�_auth_login�SimSMTPChannel._auth_login�sw���;��I�I�(�)���1�2�2�$(�$7�$7��$<�D�!��I�I�(�)��*�*�3�/�H����� 5� 5�x�8�A�;�7N�O��%rc�&�URS5 g)Nz334 QnVHZ1liVWdHeQ==)r��rr�s  r�_auth_buggy�SimSMTPChannel._auth_buggy�s��	
�	�	�(�)rc�8�Uc%URSR[55 gURU5nUR	5up4[SRS5nUR[5RS5n[R"XgS5R5nURX4U:H5 g![
a*nURSRX%55 SnAgSnAff=f![
a URS5 gf=f)Nz334 {}r	rr-�md5z504 CRAM-MD5 is not supported)r�r]�sim_cram_md5_challengerr�rfr
r�hmac�HMAC�	hexdigestr�)	rr�rr��hashed_passr(�pwdr>�valid_hashed_passs	         r�_auth_cram_md5�SimSMTPChannel._auth_cram_md5�s����;��I�I�h�o�o�&<�=�>��)�)�#�.�G�
�$+�M�M�O�!��
�1�+�$�$�W�-�C��%�%�&<�=�D�D�W�M�C�
�$(�I�I�c��$>�$H�$H�$J�!�
����5F�&F�G���
��	�	�'�'-�v�g�'9�;���
���
��	�	�9�:��
�s)�C�
%C;�
C8� C3�3C8�;D�Dc�f�SnX R-S-nURU5 XlSUlg)NzH250-testhost
250-EXPN
250-SIZE 20000000
250-STARTTLS
250-DELIVERBY
z250 HELPT)r�r�r�r�)rr��resps   r�	smtp_EHLO�SimSMTPChannel.smtp_EHLO�s7��$��
�)�)�)�J�6���	�	�$�� ��!��rc��U[;a5URS[U<S[R"U5<35 gURSU-5 g)N�250 r�z550 No such user: %s)�	sim_usersr�r0�	quoteaddrrs  r�	smtp_VRFY�SimSMTPChannel.smtp_VRFY�s<���)���I�I�Y�s�^�W�5F�5F�s�5K�L�M��I�I�,�s�2�3rc�j�UR5nU[;a�[Un[U5HoupE[R"U5nU[U5S-
:a"UR
S[U<SU<35 MOUR
S[U<SU<35 Mq gUR
S5 g)Nrz250-r�r'z550 No access for you!)r��	sim_lists�	enumerater0r)r�r�r()rr��	list_name�	user_listr%�
user_email�quoted_addrs       r�	smtp_EXPN�SimSMTPChannel.smtp_EXPN�s����I�I�K�	��	�!�!�)�,�I�!*�9�!5�
��%�/�/�
�;���s�9�~��)�)��I�I�Y�z�-B�K�P�Q��I�I�Y�z�-B�K�P�Q�"6�
�I�I�.�/rc�>�URc[[U]U5 gUR	UR5 UR5 gr)�
quit_responser�r��	smtp_QUITr��close_when_done�rr�r�s  �rr7�SimSMTPChannel.smtp_QUIT�s<������%��.�$�1�#�6��I�I�d�(�(�)�� � �"rc�>�URc[TU]	U5 gURUR5 UR(aUR5 ggr)�
mail_responser��	smtp_MAILr��
disconnectr8r9s  �rr=�SimSMTPChannel.smtp_MAIL�sF������%��G��c�"��I�I�d�(�(�)�����$�$�&�rc�>�URc[TU]	U5 gU=RS-
slUR	URURS-
5 g�Nr)�
rcpt_responser��	smtp_RCPT�
rcpt_countr�r9s  �rrC�SimSMTPChannel.smtp_RCPT�sM������%��G��c�"�����1����	�	�$�$�$�T�_�_�Q�%6�7�8rc�N>�U=RS-
sl[TU]	U5 grA)�
rset_countr��	smtp_RSETr9s  �rrH�SimSMTPChannel.smtp_RSET�s������1���
���#�rc�v>�URc[TU]	U5 gURUR5 gr)�
data_responser��	smtp_DATAr�r9s  �rrL�SimSMTPChannel.smtp_DATA�s.������%��G��c�"��I�I�d�(�(�)rc��errrs r�handle_error�SimSMTPChannel.handle_error����
r)	rr�r�r�r�r�r�r�r�r)!r�r�r�r�r6r<rBrKrDrGr>r�r�r�r�r�r�rr
rrr r$r*r3r7r=rCrHrLrOr�r�r�s@rr�r�3s�����M��M��M��M��J��J��J�
�D���:�#�>�2'�J�?�&�*�
H�*	"�4�0�#�'�9��*��rr�c�6�\rSrSr\rSrSrSrSr	Sr
Srg)	�
SimSMTPServeri�c�h�/Ul0Ul[RR"U/UQ70UD6 gr)�_extra_features�
_addressesr�
SMTPServerr��rr�r�s   rr��SimSMTPServer.__init__�s/��!������
���!�!�$�4��4��4rc�Z�URURXUURS9Ulg)Nr�)�
channel_classrU�_decode_data�_SMTPchannel�rr#r$s   r�handle_accepted�SimSMTPServer.handle_accepted�s0�� �.�.�� � �$�d��)�)�/�+��rc�<�X RS'X0RS'g)N�from�tos)rV)r�peer�mailfrom�rcpttos�datas     r�process_message�SimSMTPServer.process_message�s��"*�����!(����rc�:�URRU5 gr)rUr�)r�features  r�add_feature�SimSMTPServer.add_features�����#�#�G�,rc��errrs rrO�SimSMTPServer.handle_errorrQr)r]rVrUN)r�r�r�r�r�r[r�r_rhrlrOr�rrrrSrS�s ��"�M�5�
+�
)�-�rrSc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
Sr\R "S
SS9S5r\R&"S5\R&"SS5S55r\R&"SS5S5r\R "S
SS9S5rSrSrSrSrSrSrSrSrSrS r S!r!S"r"S#r#S$r$g%)&�SMTPSimTestsic��[R"5Ul[RUl[R[l[R"5Ul	[R"5Ul
[[S4SSS9Ul
URRR5SUlURURUR4n[R "["US9UlUR$R'5 URR)5 URR+5 g�Nrr�Tr�rr�)r	r�r�r1r�r�rr�r�r�r�rSrDr"r�r2r�r�r�r�r�r�r�s  rr3�SMTPSimTests.setUp
s���*�:�:�<���"�N�N���$�,�,���!���)��
�#�/�/�+���!�4��)�_�$�O��	��I�I�$�$�0�0�2�1�5��	��Y�Y��
�
�t���?�	��&�&�.>�Y�O���������	
�
�
�����
�
���rc�4�UR[lURR	5 UR
R
5 [R"UR5 U?	UR5 [R"UR6 gr�
r�r1r�r�rr�r�r	r�r�r�r�r�rs rr6�SMTPSimTests.tearDown�b���*�*����������
�
�����$�$�T�[�[�1��K������*�*�D�O�O�<rc��[R"[URS[R
S9nUR
5 gr�r�r�s  rr��SMTPSimTests.testBasic*r�rc��[R"[URS[R
S9nUR
UR05 SSSSSS.nUR5 UR
URU5 UH#nURURU55 M% URURS55 UR5 g)Nr�r�r��20000000)�expn�size�starttls�	deliverbyrzunsupported-feature)
r0r�rDr2rr�r9�esmtp_featuresr��
assertTruer��assertFalser�)rr��expected_features�ks    r�testEHLO�SMTPSimTests.testEHLO0s����|�|�D�$�)�)�K�$+�$<�$<�>��	
����,�,�b�1�%'�%/�)+�*,�%'�	��	
�	�	������,�,�.?�@�"�A��O�O�D�M�M�!�,�-�#�������'<�=�>��	�	�rc	���[R"[URS[R
S9n[R5HOup#S[U<S[R"U5<3S54nURURU5U5 MQ SnSSU-RS54nURURU5U5 UR5 g)	Nr�r�r�r�r-r�&zNo such user: %s)r0r�rDr2rr�r(�items�bytesr)r9rrr�)rr��	addr_spec�name�expected_known�u�expected_unknowns       rr�SMTPSimTests.testVRFYFs����|�|�D�$�)�)�K�$+�$<�$<�>�� )���0�O�I�!�5�*.��0A�0A�)�0L�*N�)0�$2�3�N�
���T�Y�Y�y�1�>�B�	 1�
!���"4�q�"8�!@�!@��!I�J��������1��'7�8��	�	�rc	��[R"[URS[R
S9n[R5H�up#/nUH6nUR[U<S[R"U5<35 M8 S[SRU5S54nURURU5U5 M� SnSnURURU5U5 UR5 g)	Nr�r�r�r�r!r-zPSU-Members-List)r�sNo access for you!)r0r�rDr2rr�r-r�r�r(r)r�r�r9r}r�)	rr��listname�members�usersr(r�r�r�s	         r�testEXPN�SMTPSimTests.testEXPNUs����|�|�D�$�)�)�K�$+�$<�$<�>��"+���!2��H��E������	�!��g�6G�6G��6J�K�L��!�5����5�)9�7�#C�D�N����T�Y�Y�x�0�.�A�"3�
��7��������1��'7�8��	�	�rc�$�URRS5 [R"[UR
S[RS9nUR[S[S5nURUS5 UR5 g)N�
AUTH PLAINr�r�rr���sAuthentication Succeeded�r"rlr0r�rDr2rr��loginr
r9r�rr�r#s   r�testAUTH_PLAIN�SMTPSimTests.testAUTH_PLAINe�g���	�	���l�+��|�|�D�$�)�)�K�$+�$<�$<�>���z�z�(�1�+�x��{�3������A�B��
�
�rc�$�URRS5 [R"[UR
S[RS9nUR[S[S5nURUS5 UR5 g)N�
AUTH LOGINr�r�rrr�r�r�s   r�testAUTH_LOGIN�SMTPSimTests.testAUTH_LOGINmr�rc�v�URRS5 [R"[UR
S[RS9n[uUl	Ul
URS5 URSURSS9nURUS5 SSS5 g!,(df   g=f)	Nr�r�r��test_auth_login�LOGINT��initial_response_okr��r"rlr0r�rDr2rr�r
r�rr��auth�
auth_loginr9r�s   r�"testAUTH_LOGIN_initial_response_ok�/SMTPSimTests.testAUTH_LOGIN_initial_response_okus����	�	���l�+�
�\�\�$��	�	�+�")�":�":�<�?C�'/�$�D�I�t�}��I�I�'�(��9�9�W�d�o�o�4�9�P�D����T�#E�F�<�<�<��
�AB*�*
B8c�v�URRS5 [R"[UR
S[RS9n[uUl	Ul
URS5 URSURSS9nURUS5 SSS5 g!,(df   g=f)	Nr�r�r�r�r�Fr�r�r�r�s   r�%testAUTH_LOGIN_initial_response_notok�2SMTPSimTests.testAUTH_LOGIN_initial_response_notok~s����	�	���l�+�
�\�\�$��	�	�+�")�":�":�<�?C�'/�$�D�I�t�}��I�I�'�(��9�9�W�d�o�o�5�9�Q�D����T�#E�F�<�<�<�r�c��^�TRRS5 S
U4Sjjn[R"[TR
S[RS9n[uUl	Ul
URS5 SnTR[RU5nURSUSS	9 SSS5 UR5 g!,(df   N=f!UR5 f=f)Nz
AUTH BUGGYc�*>�TRSU5 g)Ns
BuGgYbUgGyr)r9)�	challengers �r�
auth_buggy�/SMTPSimTests.testAUTH_BUGGY.<locals>.auth_buggy�s������]�I�6�rr�r��test_auth_buggyz&^Server AUTH mechanism infinite loop.*�BUGGYFr�r)r"rlr0r�rDr2rr�r
r�rr��assertRaisesRegex�
SMTPExceptionr�r)rr�r��expect�cms`    r�testAUTH_BUGGY�SMTPSimTests.testAUTH_BUGGY�s�����	�	���l�+�	��|�|��$�)�)�K��,�,�
��	�'/�$�D�I�t�}��I�I�'�(�>�F��'�'��(=�(=�v�F�"��	�	�'�:�5�	�I�G�
�J�J�L�G�F��
�J�J�L�s%�AC�C
�1C�

C�C�C-rT)�opensslc�$�URRS5 [R"[UR
S[RS9nUR[S[S5nURUS5 UR5 g)N�
AUTH CRAM-MD5r�r�rrr�r�r�s   r�testAUTH_CRAM_MD5�SMTPSimTests.testAUTH_CRAM_MD5�sg���	�	���o�.��|�|�D�$�)�)�K�$+�$<�$<�>���z�z�(�1�+�x��{�3������A�B��
�
�rz	hmac.HMACzsmtplib._have_cram_md5_supportFc���URRS5 [R"[UR
S[RS9nURUR5 [R"S5nUR[RU5 UR[S[S5 SSS5 UR!5 g!,(df   N=f)Nr�r�r�z(No suitable authentication method found.rr)r"rlr0r�rDr2rr�r�rrr�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�$+�$<�$<�>������
�
�#��i�i�B�C��
�
#�
#�G�$9�$9�3�
?��J�J�x��{�H�Q�K�0�@��*�*�,�@�
?�s� !C�
C(c�t�URRS5 [R"[UR
S[RS9nURUR5 [RRUS5n[RRUSURS9nUR[S[S5nSSS5 SSS5 WR!5 WR#5 UR%WS	5 g!,(df   NI=f!,(df   NR=f)
NzAUTH CRAM-MD5 PLAINr�r��
auth_cram_md5�
auth_plain)�wrapsrrr�)r"rlr0r�rDr2rr�r�r�mock�patch�objectr�r�r
�assert_called_oncer�r9)rr��smtp_auth_cram_md5�smtp_auth_plainr#s     r�&testAUTH_CRAM_MD5_blocked_and_fallback�3SMTPSimTests.testAUTH_CRAM_MD5_blocked_and_fallback�s���	
�	�	���3�4��|�|�D�$�)�)�K�$+�$<�$<�>������
�
�#��J�J���d�O�4�8J��J�J����l�$�/�/�
�
� ��:�:�h�q�k�8�A�;�7�D�	
�
5�	�*�*�,��,�,�.�����A�B�
�
��
5�4�s$�
*D)�4!D�D)�
D&	�"D)�)
D7c�$�URRS5 [R"[UR
S[RS9nUR[S[S5nURUS5 UR5 g)NzAUTH BOGUS PLAIN LOGIN CRAM-MD5r�r�rrr�r�r�s   r�testAUTH_multiple�SMTPSimTests.testAUTH_multiple�sj��	
�	�	���?�@��|�|�D�$�)�)�K�$+�$<�$<�>���z�z�(�1�+�x��{�3������A�B��
�
�rc	���SS1n[R"5 URS5 UH-nURRSR
U55 M/ UH�nURUS9 [R"[URS[RS9nURS5 [S	[S
sUlUlSUR%5R'SS
5-nUR)U[+X455nUR-US5 UR/5 SSS5 M� g![a GN#f=f!,(df   GM=f)N�PLAINr�zCRAM-MD5zAUTH {})�	mechanismr�r��foorr�auth_r�r�r�)�hashlibr�addrfr"rlr]�subTestr0r�rDr2rr�r�r
r�rr�r�r�r�r9r)r�	supportedr�r��methodr#s      r�test_auth_function�SMTPSimTests.test_auth_function�s"���g�&�	�	&��K�K�M�
�M�M�*�%�"�I��I�I�!�!�)�"2�"2�9�"=�>�#�"�I����	��2��|�|�D�$�)�)�3>�,3�,D�,D�F���	�	�%� �+3�A�;����(��	�4�=� �9�?�?�#4�#<�#<�S�#�#F�F���y�y��G�D�,A�B��� � ��'I�J��
�
��3�2�#��
�	��	��3�2�s�E�3CE�
E�E�
E#	c�2�[R"[URS[R
S9nUR
5up#URUS5 URSUR5 UR5 URSUR5 UR[UR5 URSUR5 UR5 URSUR5 UR5 g)Nr�r�r�r~)r0r�rDr2rr�r�r9rr�r�r8rq�ehlo_or_helo_if_needed�rr��code�messages    r�test_quit_resets_greeting�&SMTPSimTests.test_quit_resets_greeting�s����|�|�D�$�)�)�+6�$+�$<�$<�>���	�	��
������s�#��
�
�f�d�1�1�2��	�	�������!4�!4�5����T�4�9�9�%������!4�!4�5��#�#�%��
�
�f�d�1�1�2��	�	�rc��[R"[UR5nUR	5up#URUS5 SSS5 UR
[RWRS5 [R"[UR5nUR5 SSS5 UR
[RURS5 g!,(df   N�=f!,(df   NK=f)Nr�sfoo)
r0r�rDr2r�r9rer�rrr�s    r�test_with_statement� SMTPSimTests.test_with_statement�s���
�\�\�$��	�	�
*�d� �I�I�K�M�D����T�3�'�+�	
���'�8�8�$�)�)�V�L�
�\�\�$��	�	�
*�d��J�J�L�+����'�8�8�$�)�)�V�L�
+�
*��+�
*�s�%C(�#C9�(
C6�9
Dc���UR[R5n[R"[UR
5nUR
5 SURRl	SSS5 SSS5 URWRRS5 URURRS5 g!,(df   Nc=f!,(df   Nl=f)Nz421 QUIT FAILED�sQUIT FAILED)rer0r�r�rDr2r�r"r]r6r9r
r�r�)r�errorr�s   r� test_with_statement_QUIT_failure�-SMTPSimTests.test_with_statement_QUIT_failure�s���
�
�
�w�<�<�
=�����d�D�I�I�.�$��	�	��7H��	�	�&�&�4�/�>�	
������2�2�C�8�������3�3�^�D�	/�.��>�
=�s#�&C �,C�2C �
C	�C � 
C.c���[R"[URS[R
S9nUR
5 SURRl	SURRl
UR[R5 URSSS5 SSS5 URUR5 g!,(df   N*=f)Nr�r�z451 Requested action abortedTrr �test message)r0r�rDr2rr�r�r"r]r<r>re�SMTPSenderRefusedr#rWrZr�s  r�test__rest_from_mail_cmd�%SMTPSimTests.test__rest_from_mail_cmd	s����|�|�D�$�)�)�K�$+�$<�$<�>���	�	��/M��	�	���,�,0��	�	���)�
�
�
�w�8�8�
9��M�M�&�'�>�:�:����$�)�)�$�:�
9�s�C�
Cc���[R"[URS[R
S9nUR
5 SURRl	UR[R5 URSSS5 SSS5 URUR5 URURRR S5 g!,(df   NZ=f)Nr�r�z421 closing connectionrr r�r)r0r�rDr2rr�r�r"r]r<rer�r#rWrZr9rGr�s  r�test_421_from_mail_cmd�#SMTPSimTests.test_421_from_mail_cmds����|�|�D�$�)�)�K�$+�$<�$<�>���	�	��/G��	�	���,�
�
�
�w�8�8�
9��M�M�&�'�>�:�:����$�)�)�$�������/�/�:�:�A�>�:�
9�s�>C&�&
C4c�L�[R"[URS[R
S9nUR
5 SS/URRl	UR[R5nURS/SQS5 SSS5 URUR5 URURRR S5 UR#WR$R&SS	S
05 g!,(df   N�=f)Nr�r�z250 accepted�421 closingr)r �Frank�Georger�rr)r�sclosing)r0r�rDr2rr�r�r"r]rBre�SMTPRecipientsRefusedr#rWrZr9rG�assertDictEqualr
r�)rr�r&s   r�test_421_from_rcpt_cmd�#SMTPSimTests.test_421_from_rcpt_cmds����|�|�D�$�)�)�K�$+�$<�$<�>���	�	��0>�
�/N��	�	���,�
�
�
�w�<�<�
=���M�M�&�">��O�>����$�)�)�$�������/�/�:�:�A�>����Q�[�[�-�-�a�0�7�<M�2N�O�	>�
=�s�D�
D#c��"SS[5nXRl[R"[
URS[RS9nUR5 UR[R5 URSS/S5 SSS5 URUR5 URURR R"S5 g!,(df   NZ=f)	Nc�(^�\rSrSrU4SjrSrU=r$)�=SMTPSimTests.test_421_from_data_cmd.<locals>.MySimSMTPChanneli*c�z>�URUR:XaURS5 g[TU]5 g)Nr�)r��DATAr�r�r�)rr�s �rr��NSMTPSimTests.test_421_from_data_cmd.<locals>.MySimSMTPChannel.found_terminator+s*����?�?�d�i�i�/��I�I�m�,��G�,�.rr)r�r�r�r�r�r�r�r�s@r�MySimSMTPChannelr*s
���
/�
/rrr�r�zJohn@foo.orgz
Sally@foo.orgr�r)r�r"r[r0r�rDr2rr�r�re�
SMTPDataErrorr#rWrZr9r]rD)rrr�s   r�test_421_from_data_cmd�#SMTPSimTests.test_421_from_data_cmd)s���	/�~�	/�#3�	�	���|�|�D�$�)�)�K�$+�$<�$<�>���	�	��
�
�
�w�4�4�
5��M�M�.�?�*;�^�L�6����$�)�)�$�������/�/�:�:�A�>�6�
5�s�C+�+
C9c	���[R"[URS[R
S9nUR
UR5 UR5 URUR5 URURS55 URURSSSSS/S	9 URUR SSS/S
9 g)Nr�r��smtputf8rr r�r�r��r���options)r0r�rDr2rr�r�rr�r��
does_esmtpr�r�re�SMTPNotSupportedErrorr#r=r�s  r�4test_smtputf8_NotSupportedError_if_no_server_support�ASMTPSimTests.test_smtputf8_NotSupportedError_if_no_server_support9s����|�|��$�)�)�K��,�,�.��	
����
�
�#��	�	��������(�������z�2�3�����)�)��M�M��G�R��
�.K�	�	M�	
����)�)��I�I�v���'D�	�	Frc�(�[R"[URS[R
S9nUR
UR5 UR[URSSS5 UR[URS5 g)Nr�r��AliceuBöbr�uÄlice)r0r�rDr2rr�r�rre�UnicodeEncodeErrorr#r=r�s  r�"test_send_unicode_without_SMTPUTF8�/SMTPSimTests.test_send_unicode_without_SMTPUTF8Ish���|�|��$�)�)�K��,�,�.��	
����
�
�#����,�d�m�m�W�f�b�Q����,�d�i�i��Brc�f�[5nSUS'SUS'SUS'[R"[URS[
RS9nURUR5 UR[R5 URU5 SSS5 g!,(df   g=f)	Nr�rTrerU�Nudge nudge, wink, wink ὠ9�Subjectr�r�)rr0r�rDr2rr�r�rrerrN)rr>r�s   r�9test_send_message_error_on_non_ascii_addrs_if_no_smtputf8�FSMTPSimTests.test_send_message_error_on_non_ascii_addrs_if_no_smtputf8Qs����n��-��F����D�	�:��I���|�|��$�)�)�K��,�,�.��	
����
�
�#�
�
�
�w�<�<�
=����c�"�>�
=�
=�s�B"�"
B0c�$�[R"[URS[R
S9nUR
UR5 [5n[RRS5US'[RRS5US'URURU505 URURR SS5 URURR S	S
/5 g)Nr�r�)uMichaël�michael@example.comrT)uRené�rene@example.comrUrbr$rcr%)r0r�rDr2rr�r�rrrJ�utils�
formataddrrrNr9r"rV)rr�r�s   r�1test_name_field_not_included_in_envelop_addresses�>SMTPSimTests.test_name_field_not_included_in_envelop_addresses_s����|�|��$�)�)�K��,�,�.��	
����
�
�#��.���+�+�0�0�1T�U�������.�.�/L�M���
����T�.�.�w�7��<�������-�-�f�5�7L�M�������-�-�e�4�7I�6J�Krc��Sn[R"[URS[R
S9nUR
UR5 URSSU5 URS/URRR5 URS/URRR5 g)Nrr�r�rr zmail from:<John> size=14zrcpt to:<Sally>)
r0r�rDr2rr�r�rr#rr"r]r�rs   r� test_lowercase_mail_from_rcpt_to�-SMTPSimTests.test_lowercase_mail_from_rcpt_tons������|�|��$�)�)�K��,�,�.��	
����
�
�#��
�
�f�g�q�)��
�
�1�2�D�I�I�4J�4J�4]�4]�^��
�
�(�)�4�9�9�+A�+A�+T�+T�Ur�r�r2r�r"r�r�r�N)%r�r�r�r�r3r6r�r�rr�r�r�r�r�r�r�requires_hashdigestr�r�r�r�r�r�r�r�r�r�r�r�rrrrr!r(r+r�rrrrqrqs���$	=���,
�� ��G�G��(�'�'��t�<��=��
�Z�Z���	�Z�Z�0�%�8�-�9��-�
�Z�Z�0�%�8�C�9�C�"�'�'��t�<��=���,
�M�E�%�?�	P�?� F� C�#�
L�
Vrrqc�.�\rSrSrSrSrSSjrSrg)�SimSMTPUTF8Serveri{c�^�SS/Ul[RR"U/UQ70UD6 g)Nr��8BITMIME)rUrrWr�rXs   rr��SimSMTPUTF8Server.__init__}s/��!+�J�7���
���!�!�$�4��4��4rc	�p�URURXUURURS9Ulg)N�r��enable_SMTPUTF8)r[rUr\r6r]r^s   rr_�!SimSMTPUTF8Server.handle_accepted�s9�� �.�.�� � �$�d��)�)� �0�0�/�
��rNc�L�XlX lX0lX@lXPlX`lgr)�	last_peer�
last_mailfrom�last_rcpttos�last_message�last_mail_options�last_rcpt_options)rrdrerfrgr��rcpt_optionss       rrh�!SimSMTPUTF8Server.process_message�s%����%��#�� ��!-��!-�r)r]rUr=r:r<r9r>r;)NN)r�r�r�r�r�r_rhr�rrrr0r0{s��5�
�KO�JN�.rr0c�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg)
�SMTPUTF8SimTestsi�Nc��[R"5Ul[RUl[R[l[R"5Ul	[R"5Ul
[[S4SSSS9Ul
URRR5SUlURURUR4n[R "["US9UlUR$R'5 URR)5 URR+5 g)Nrr�FTr5rr�)r	r�r�r1r�r�rr�r�r�r�r0rDr"r�r2r�r�r�r�r�r�r�s  rr3�SMTPUTF8SimTests.setUp�s���*�:�:�<���"�N�N���$�,�,���!���)��
�#�/�/�+���%�t�Q�i��27�6:�<��	��I�I�$�$�0�0�2�1�5��	��Y�Y��
�
�t���?�	��&�&�.>�Y�O���������	
�
�
�����
�
���rc�4�UR[lURR	5 UR
R
5 [R"UR5 U?	UR5 [R"UR6 grrvrs rr6�SMTPUTF8SimTests.tearDown�rxrc�6�[R"[URS[R
S9nUR
UR5 UR5 URUR5 URURS55 g)Nr�r�r)r0r�rDr2rr�r�rr�r�rr�r�s  r�$test_test_server_supports_extensions�5SMTPUTF8SimTests.test_test_server_supports_extensions�sd���|�|��$�)�)�K��,�,�.��	
����
�
�#��	�	��������(�����
�
�j�1�2rc��SRS5n[R"[URS[
RS9nURUR5 URSSUSS/S	9 URURRS5 URURRS/5 URURRU5 URSURR 5 URSURR 5 URURR"/5 g)
N�$¡a test message containing unicode!rr�r�uJőhnuSállyr�r�r)rr0r�rDr2rr�r�rr#r9r"r:r;r<rr=r>rs   r�,test_send_unicode_with_SMTPUTF8_via_sendmail�=SMTPUTF8SimTests.test_send_unicode_with_SMTPUTF8_via_sendmail�s��2�9�9�'�B���|�|��$�)�)�K��,�,�.��	
����
�
�#��
�
�g�x��$3�Z�#@�	�	B�������0�0�'�:�������/�/�(��<�������/�/��3��
�
�o�t�y�y�'B�'B�C��
�
�j�$�)�)�"=�"=�>�������4�4�b�9rc�t�SRS5n[R"[URS[
RS9nURUR5 UR5 URURSSS/S9S	5 URURS
5S	5 URURU5S	5 URURRS5 URURR S
/5 URURR"U5 UR%SURR&5 UR%SURR&5 URURR(/5 g)NrKrr�r�uJőr�r�rr�uJános)rr0r�rDr2rr�r�rr�r9r=�rcptrgr"r:r;r<rr=r>rs   r�1test_send_unicode_with_SMTPUTF8_via_low_level_API�BSMTPUTF8SimTests.test_send_unicode_with_SMTPUTF8_via_low_level_API�sB��2�9�9�'�B���|�|��$�)�)�K��,�,�.��	
����
�
�#��	�	������I�I�e�o�z�%B�I�C��	�	
������8�,�l�;�������1��|�4�������0�0�%�8�������/�/�(��<�������/�/��3��
�
�o�t�y�y�'B�'B�C��
�
�j�$�)�)�"=�"=�>�������4�4�b�9rc�H�[5nSUS'SUS'SUS'URS5 [R"S5n[R
"[URS	[RS
9nURUR5 URURU505 URURRS5 URURR S/5 URURR"R%5U5 UR'SURR(5 UR'S
URR(5 URURR*/5 g)Nr�rTrerUrr u1oh 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�)r�set_content�textwrap�dedentr0r�rDr2rr�r�rr9rNr"r:r;r<r.rr=r>)rr>r<r�s    r�2test_send_message_uses_smtputf8_if_addrs_non_ascii�CSMTPUTF8SimTests.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��
�
�o�t�y�y�'B�'B�C��
�
�j�$�)�)�"=�"=�>�������4�4�b�9rr-)r�r�r�r�r�r3r6rHrLrPrVr�rrrrBrB�s%���G��(	=�3�
:�:�&:rrBspsudoesnotexistr�)�eolc��\rSrSrSrSrg)�!SimSMTPAUTHInitialResponseChannelic���UR5nUSR5S:Xa.[U5S:XaUS[:XaUR	S5 gUR	S5 g)Nr�plainr}rz235 Okz571 Bad authentication)r�r�r��EXPECTED_RESPONSEr�)rr�r�s   rr��+SimSMTPAUTHInitialResponseChannel.smtp_AUTHsW���y�y�{����7�=�=�?�g�%��4�y�A�~���7�/�/��I�I�h�'���	�	�*�+rrN)r�r�r�r�r�r�rrrrZrZs��,rrZc��\rSrSr\rSrg)� SimSMTPAUTHInitialResponseServerirN)r�r�r�r�rZr[r�rrrr`r`s��5�Mrr`c�,�\rSrSrSrSrSrSrSrg)�SMTPAUTHInitialResponseSimTestsic��[R"5Ul[RUl[R[l[R"5Ul	[R"5Ul
[[S4SSS9Ul
URRR5SUlURURUR4n[R "["US9UlUR$R'5 URR)5 URR+5 grs)r	r�r�r1r�r�rr�r�r�r�r`rDr"r�r2r�r�r�r�r�r�r�s  rr3�%SMTPAUTHInitialResponseSimTests.setUps���*�:�:�<���"�N�N���$�,�,���!���)��
�#�/�/�+���4�
�1�I��D�:��	��I�I�$�$�0�0�2�1�5��	��Y�Y��
�
�t���?�	��&�&�.>�Y�O���������	
�
�
�����
�
���rc�4�UR[lURR	5 UR
R
5 [R"UR5 U?	UR5 [R"UR6 grrvrs rr6�(SMTPAUTHInitialResponseSimTests.tearDown-rxrc���URRS5 [R"[UR
S[RS9nURSS5 UR5 g)Nr�r�r��psu�doesnotexist)
r"rlr0r�rDr2rr�r�rr�s  r�%testAUTH_PLAIN_initial_response_login�ESMTPAUTHInitialResponseSimTests.testAUTH_PLAIN_initial_response_login8sL���	�	���l�+��|�|�D�$�)�)�K�$+�$<�$<�>���
�
�5�.�)��
�
�rc�<�URRS5 [R"[UR
S[RS9nSUlSUl	URSUR5up#UR5 URUS5 g)Nr�r�r�rhrir\r�)r"rlr0r�rDr2rr�r�rr�r�rr9)rr�r��responses    r�$testAUTH_PLAIN_initial_response_auth�DSMTPAUTHInitialResponseSimTests.testAUTH_PLAIN_initial_response_auth?sr���	�	���l�+��|�|�D�$�)�)�K�$+�$<�$<�>����	�&��
����7�D�O�O�<����
�
������s�#rr-N)	r�r�r�r�r3r6rjrnr�rrrrbrbs���&	=��$rrb�__main__)Fr�email.mime.textrJ�
email.messager�email.base64mimer�
encode_base64�email.utilsr�rr1r0r�rrr�r�rr�rTr�r��
unittest.mockr��testrr�test.supportrrr	r
rr�requires_working_socketrD�platformr�SMTPChannelr*r,�TestCaser�r�r�r%r&r�r�r�r�r�r(r
rr-�	Exceptionr�r�rWrSrqr0rBr]rZr`rbr��mainrrr�<module>rs)��
��&�9����
��	�	�
��
������%�'�&�)�!������t�,������<�<�8��
�$/�E���!��,`6�`6�F�|�X�%6�%6��
/�|�X�%6�%6�/�,�>
6�	�
3��S�8�,�,�S�j)��*�*�)�60�H�-�-�0�8=��*�*�=�&;�x�(�(�;�@#+�#,�'/�
�	�
2��;��+�,E�F�,�.�
�	�
)�	�(�z�U�&�&�z�z�E�$�$��6mV�8�$�$�mV�`.�
�.�4l:�x�(�(�l:�^"�"8�b�A��
,��
,�6�}�6�.$�h�&7�&7�.$�b�z���M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit