관리-도구
편집 파일: smtplib.cpython-39.opt-2.pyc
a �����DOg]�����������������������@���sV��d�dl�Z�d�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dlZd�dl Z d�dl Z d�dlZd�dlm Z�g�d�ZdZdZdZdZdZd Ze�d ej�ZG�dd��de�ZG�d d��de�ZG�dd��de�ZG�dd��de�ZG�dd��de�ZG�dd��de�ZG�dd��de�Z G�dd��de�Z!G�dd��de�Z"G�dd��de�Z#dd ��Z$d!d"��Z%d#d$��Z&d%d&��Z'd'd(��Z(zd�dl)Z)W�n�e*�y~���d)Z+Y�n0�d*Z+G�d+d,��d,�Z,e+�r�G�d-d.��d.e,�Z-e�.d.��d/Z/G�d0d1��d1e,�Z0e1d2k�rRd3d4��Z2e2d5�Z3e2d6��4d7�Z5e6d8��d9Z7ej8�9��Z:e:�s�qe7e:�Z7�q�e6d:e;e7����e,d;�Z<e<�=d<��e<�>e3e5e7��e<�?���dS�)=�����N)�body_encode) � SMTPException�SMTPNotSupportedError�SMTPServerDisconnected�SMTPResponseException�SMTPSenderRefused�SMTPRecipientsRefused� SMTPDataError�SMTPConnectError� SMTPHeloError�SMTPAuthenticationError� quoteaddr� quotedata�SMTP����i���� s��� i� ������z auth=(.*)c�������������������@���s���e�Zd�ZdS�)r���N��__name__� __module__�__qualname__��r���r����/usr/lib64/python3.9/smtplib.pyr���H���s���r���c�������������������@���s���e�Zd�ZdS�)r���Nr���r���r���r���r���r���K���s���r���c�������������������@���s���e�Zd�ZdS�)r���Nr���r���r���r���r���r���R���s���r���c�������������������@���s���e�Zd�Zdd��ZdS�)r���c�����������������C���s���||�_�||�_||f|�_d�S��N)� smtp_code� smtp_error�args)�self�code�msgr���r���r����__init__c���s����zSMTPResponseException.__init__N�r���r���r���r ���r���r���r���r���r���Z���s��� r���c�������������������@���s���e�Zd�Zdd��ZdS�)r���c�����������������C���s"���||�_�||�_||�_|||f|�_d�S�r���)r���r����senderr���)r���r���r���r"���r���r���r���r ���o���s����zSMTPSenderRefused.__init__Nr!���r���r���r���r���r���h���s���r���c�������������������@���s���e�Zd�Zdd��ZdS�)r���c�����������������C���s���||�_�|f|�_d�S�r���)� recipientsr���)r���r#���r���r���r���r ���}���s����zSMTPRecipientsRefused.__init__Nr!���r���r���r���r���r���u���s���r���c�������������������@���s���e�Zd�ZdS�)r ���Nr���r���r���r���r���r �������s���r ���c�������������������@���s���e�Zd�ZdS�)r ���Nr���r���r���r���r���r �������s���r ���c�������������������@���s���e�Zd�ZdS�)r���Nr���r���r���r���r���r�������s���r���c�������������������@���s���e�Zd�ZdS�)r���Nr���r���r���r���r���r�������s���r���c�����������������C���s>���t�j�|��\}}||fdkr6|�����d�r.|�S�d|��S�d|�S�)N���r%����<z<%s>)�email�utils� parseaddr�strip� startswith�Z addrstringZdisplayname�addrr���r���r���r �������s����r ���c�����������������C���s$���t�j�|��\}}||fdkr |�S�|S�)Nr$���)r'���r(���r)���r,���r���r���r���� _addr_only����s����r.���c�������������� ���C���s���t��ddt��dt|���S�)Nz(?m)^\.z..�(?:\r\n|\n|\r(?!\n))��re�sub�CRLF��datar���r���r���r�������s�����r���c�����������������C���s���t��dd|��S�)Ns���(?m)^\.s���..)r1���r2���)Zbindatar���r���r����_quote_periods����s����r6���c�����������������C���s���t��dt|��S�)Nr/���r0���r4���r���r���r���� _fix_eols����s����r7���FTc�������������������@���sv��e�Zd�ZdZdZdZdZdZdZdZ e Zdddej dfdd�Zdd��Zd d ��Zdd��Zd d��Zdd��ZdMdd�Zdd��ZdNdd�Zdd��ZdOdd�ZdPdd�ZdQdd�Zd d!��ZdRd"d#�Zd$d%��Zd&d'��Zd(d)��ZdSd+d,�Z dTd-d.�Z!d/d0��Z"d1d2��Z#e#Z$d3d4��Z%d5d6��Z&d7d8�d9d:�Z'dUd;d<�Z(dVd=d>�Z)dWd?d@�Z*d7d8�dAdB�Z+dXdCdD�Z,dYdEdF�Z-dZdGdH�Z.dIdJ��Z/dKdL��Z0dS�)[r���r���N�ehlor%���c����������� ������C���s����||�_�||�_i�|�_d|�_||�_d|�_|rR|��||�\}}|dkrR|�����t||��|d�urb||�_ nNt ���}d|v�rz||�_ n6d} zt �t � ���} W�n�t jy����Y�n0�d| �|�_ d�S�)N�asciir���������.z 127.0.0.1z[%s])�_host�timeout�esmtp_features�command_encoding�source_address�_auth_challenge_count�connect�closer ����local_hostname�socket�getfqdn� gethostbyname�gethostname�gaierror) r����host�portrD���r=���r@���r���r���Zfqdnr-���r���r���r���r �������s,���� z SMTP.__init__c�����������������C���s���|�S�r���r����r���r���r���r���� __enter__��s����zSMTP.__enter__c�����������������G���sT���zDz$|���d�\}}|dkr$t||��W�n�ty8���Y�n0�W�|�����n |�����0�d�S�)NZQUIT�����)�docmdr���r���rC���)r���r���r����messager���r���r����__exit__��s����z SMTP.__exit__c�����������������C���s ���||�_�d�S�r���)� debuglevel)r���rR���r���r���r����set_debuglevel"��s����zSMTP.set_debuglevelc�����������������G���sB���|�j�dkr.ttj������g|�R�dtji��nt|dtji��d�S�)N�����file)rR����print�datetimeZnow�time�sys�stderr�r���r���r���r���r����_print_debug+��s���� $zSMTP._print_debugc�����������������C���sF���|d�ur|st�d��|�jdkr2|��d||f|�j��t�||f||�j�S�)N�0Non-blocking socket (timeout=0) is not supportedr���zconnect: to)� ValueErrorrR���r\���r@���rE����create_connection)r���rJ���rK���r=���r���r���r����_get_socket1��s���� �zSMTP._get_socket� localhostc�����������������C���s����|r ||�_�|sz|�d�|�d�krz|�d�}|dkrz|d�|��||d�d����}}zt|�}W�n�tyx���td��Y�n0�|s�|�j}t�d|�||��|�� |||�j �|�_d�|�_|�� ��\}}|�jdkr�|��dt|���||fS�)N�:r���rT���znonnumeric portzsmtplib.connect�connect:)r@����find�rfind�intr^����OSError�default_portrY����auditr`���r=����sockrU����getreplyrR���r\����repr)r���rJ���rK���r@����ir���r���r���r���r���rB���;��s&���� zSMTP.connectc�����������������C���s����|�j�dkr|��dt|���|�jrzt|t�r6|�|�j�}t� d|�|��z|�j� |��W�q��tyv���|�����t d��Y�q�0�nt d��d�S�)Nr���zsend:zsmtplib.send�Server not connectedzplease run connect() first)rR���r\���rl���rj���� isinstance�str�encoder?���rY���ri����sendallrg���rC���r���)r����sr���r���r����send\��s���� z SMTP.sendc�����������������C���sd���|dkr|}n|��d|���}d|v�s,d|v�rN|��dd���dd�}td|�����|��|��t�����d�S�)Nr%���� � � z\nz\rz=command and arguments contain prohibited newline characters: )�replacer^���rt���r3���)r����cmdr���rs���r���r���r����putcmdo��s�����zSMTP.putcmdc�������������� ���C���sP��g�}|�j�d�u�r|�j�d�|�_�z|�j��td��}W�n<�tyl�}�z$|�����tdt|����W�Y�d�}~n d�}~0�0�|s�|�����td��|�j dkr�|�� dt|���t|�tkr�|�����t dd��|�|d d����d ���|d�d��}zt|�}W�n�t�y���d}Y��q Y�n0�|dd ��d kr�q qd�|�}|�j dk�rH|�� d||f���||fS�)N�rbrT���z Connection unexpectedly closed: zConnection unexpectedly closedr���zreply:i���zLine too long.����s��� �����������-���� zreply: retcode (%s); Msg: %a)rU���rj����makefile�readline�_MAXLINErg���rC���r���rp���rR���r\���rl����lenr����appendr*���rf���r^����join)r����resp�line�er���Zerrcode�errmsgr���r���r���rk���|��s>���� � z SMTP.getreplyc�����������������C���s���|���||��|����S�r����rz���rk���)r���ry���r���r���r���r���rO������s����z SMTP.docmdc�����������������C���s,���|���d|p|�j��|����\}}||�_||fS�)N�helo)rz���rD���rk���� helo_resp)r����namer���r���r���r���r���r�������s����z SMTP.heloc����������� ������C���s.��i�|�_�|��|�j|p|�j��|����\}}|dkrJt|�dkrJ|�����td��||�_|dkr`||fS�d|�_ |�j� d��d�}|d=�|D�]�}t� |�}|r�|�j��dd �d �|�d�d��|�j�d<�q�t� d|�}|r�|�d����}|j|�d�d������} |dk�r|�j��|d �d �| �|�j�|<�q�| |�j�|<�q�||fS�) Nr~���r���rn�������rT���zlatin-1rw����authr%���ru���z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?�feature)r>���rz����ehlo_msgrD���rk���r����rC���r���� ehlo_resp� does_esmtp�decode�split� OLDSTYLE_AUTH�match�get�groupsr1����group�lower�string�endr*���) r���r����r���r���r�����eachZ auth_match�mr�����paramsr���r���r���r8������sB���� �� ��z SMTP.ehloc�����������������C���s���|����|�jv�S�r���)r����r>���)r����optr���r���r����has_extn���s����z SMTP.has_extnc�����������������C���s���|���d|��|����d�S�)N�helprT���r����r[���r���r���r���r�������s����z SMTP.helpc�����������������C���s���d|�_�|��d�S�)Nr9����rset)r?���rO���rL���r���r���r���r�������s����z SMTP.rsetc�����������������C���s$���z|������W�n�ty���Y�n0�d�S�r���)r����r���rL���r���r���r����_rset���s����z SMTP._rsetc�����������������C���s ���|���d�S�)N�noop)rO���rL���r���r���r���r������s����z SMTP.noopr���c�����������������C���sh���d}|rH|�j�rHtdd��|D���r:|��d�r2d|�_ntd��dd�|��}|��dd t|�|f���|����S�) Nr%���c�����������������s���s���|�]}|����d�kV��qdS�)�smtputf8N)r����)�.0�xr���r���r���� <genexpr>�������zSMTP.mail.<locals>.<genexpr>r����zutf-8z SMTPUTF8 not supported by serverru����mailz FROM:%s%s) r�����anyr����r?���r���r����rz���r ���rk���)r���r"����options� optionlistr���r���r���r������s���� �z SMTP.mailc�����������������C���s<���d}|r|�j�rdd�|��}|��ddt|�|f���|����S�)Nr%���ru����rcptzTO:%s%s)r����r����rz���r ���rk���)r���Zrecipr����r����r���r���r���r����$��s ���� z SMTP.rcptc�����������������C���s����|���d��|����\}}|�jdkr0|��d||f��|dkrDt||��n|t|t�r\t|��d�}t |�}|dd���t kr||t �}|d�t �}|��|��|����\}}|�jdkr�|��d||f��||fS�d�S�)Nr5���r���zdata:ib��r9����������.)rz���rk���rR���r\���r ���ro���rp���r7���rq���r6����bCRLFrt���)r���r���r����repl�qr���r���r���r5���,��s"���� z SMTP.datac�����������������C���s���|���dt|���|����S�)N�vrfy�rz���r.���rk����r����addressr���r���r����verifyI��s����zSMTP.verifyc�����������������C���s���|���dt|���|����S�)N�expnr����r����r���r���r���r����P��s����z SMTP.expnc�����������������C���sb���|�j�d�u�r^|�jd�u�r^d|����d���kr0dks^n�|����\}}d|��krRdks^n�t||��d�S�)N�����r���i+��)r����r����r8���r����r���)r���r���r����r���r���r����ehlo_or_helo_if_neededW��s ����zSMTP.ehlo_or_helo_if_neededT��initial_response_okc���������� ������C���s����|����}|r|��nd�}|d�urPt|�d�dd�}|��d|d�|��\}}d|�_n|��d|�\}}d|�_|dkr�|��jd7��_t�|�}t||��d�dd�}|��|�\}}|�jtkrftd t ||f����qf|d v�r�||fS�t ||��d�S�)Nr9���r%���)ZeolZAUTHru���rT���r���iN��z4Server AUTH mechanism infinite loop. Last response: ������i���)�upper� encode_base64rq���rO���rA����base64Zdecodebytes� _MAXCHALLENGEr���rl���r���) r���Z mechanismZ authobjectr����Zinitial_response�responser���r����� challenger���r���r���r����h��s0���� � ��z SMTP.authc�����������������C���s0���|d�u�rd�S�|�j�d�t�|�j�d�|d�����S�)Nru���r9����md5)�user�hmac�HMAC�passwordrq���� hexdigest�r���r����r���r���r���� auth_cram_md5���s �����zSMTP.auth_cram_md5c�����������������C���s���d|�j�|�jf�S�)Nz�%s�%s)r����r����r����r���r���r���� auth_plain���s����zSMTP.auth_plainc�����������������C���s"���|d�u�s|�j�dk�r|�jS�|�jS�d�S�)N����)rA���r����r����r����r���r���r���� auth_login���s����zSMTP.auth_loginc�������������������s����|������|��d�std��|�jd������g�d�}��fdd�|D��}|sNtd��||�|�_|�_|D�]v}d|���� dd ��}z4|�j |t|�|�|d �\}} |dv�r�|| fW���S�W�q`�ty��} �z| }W�Y�d�} ~ q`d�} ~ 0�0�q`|�d�S�)Nr����z,SMTP AUTH extension not supported by server.)zCRAM-MD5ZPLAINZLOGINc��������������������s���g�|�]}|��v�r|�qS�r���r���)r����r�����Zadvertised_authlistr���r���� <listcomp>���s����zSMTP.login.<locals>.<listcomp>z(No suitable authentication method found.Zauth_�-�_r����r����) r����r����r���r>���r����r���r����r����r����rx���r�����getattrr���)r���r����r����r����Zpreferred_authsZauthlistZ authmethodZmethod_namer���r����r����Zlast_exceptionr���r����r����login���s.���� � � z SMTP.loginc�����������������C���s����|������|��d�std��|��d�\}}|dkr�ts<td��|d�urT|d�urTtd��|d�url|d�urltd��|d�us||d�ur�dd�l}|�d t d ��|d�u�r�t j||d�}|j|�j |�jd�|�_ d�|�_d�|�_d�|�_i�|�_d|�_n t||��||fS�) N�starttlsz+STARTTLS extension not supported by server.ZSTARTTLSr:���z&No SSL support included in this Python�4context and keyfile arguments are mutually exclusive�5context and certfile arguments are mutually exclusiver����Akeyfile and certfile are deprecated, use a custom context insteadr������certfile�keyfile�Zserver_hostname)r����r����r���rO���� _have_ssl�RuntimeErrorr^����warnings�warn�DeprecationWarning�ssl�_create_stdlib_context�wrap_socketrj���r<���rU���r����r����r>���r����r���)r���r����r�����contextr����Zreplyr����r���r���r���r�������s@���� ���� z SMTP.starttlsc�����������������C���s^��|������g�}t|t�r$t|��d�}|�jrZ|��d�rF|�dt|����|D�]}|�|��qJ|�� ||�\}} |dkr�|dkr�|�� ���n|�����t|| |��i�} t|t�r�|g}|D�]H}|�� ||�\}} |dkr�|dkr�|| f| |<�|dkr�|�� ���t| ��q�t| �t|�k�r|�����t| ��|��|�\}} |dk�rZ|dk�rH|�� ���n|�����t|| ��| S�)Nr9����sizezsize=%dr����i�������)r����ro���rp���r7���rq���r����r����r����r����r����rC���r����r���r����r���r5���r ���)r���� from_addr�to_addrsr����mail_options�rcpt_optionsZ esmtp_opts�optionr���r����Zsenderrsr����r���r���r����sendmail(��sF����@ z SMTP.sendmailc�����������������C���s���|������|�d�}|d�u�r d}nt|�dkr2d}ntd��|d�u�r||d�|v�rZ||d��n ||d��}tj�|g�d�d�}|d�u�r�d d ��||d��||d��||d ��fD��}dd ��tj�|�D��}t�|�} | d=�| d=�d} zd�|g|��� d��W�n,�t �y&���|��d��std��d} Y�n0�t ����f}| �rftjj||jjdd�d�}g�|�d�d�R�}ntj�|�}|j| dd��|���} W�d�����n1��s�0����Y��|��||| ||�S�)NzResent-Dater%���rT���zResent-z0message has more than one 'Resent-' header blockZSender�Fromr���c�����������������S���s���g�|�]}|d�ur|�qS�r���r���)r�����fr���r���r���r�������s����z%SMTP.send_message.<locals>.<listcomp>�ToZBccZCcc�����������������S���s���g�|�]}|d���qS�)rT���r���)r�����ar���r���r���r�������r����z Resent-BccFr9���r����z�One or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityT)�utf8)�policyZSMTPUTF8z BODY=8BITMIMEr���)�linesep)r����Zget_allr����r^���r'���r(���Zgetaddresses�copyr����rq����UnicodeEncodeErrorr����r����io�BytesIO� generatorZBytesGeneratorr����ZcloneZflatten�getvaluer����)r���r���r����r����r����r����ZresentZ header_prefixZaddr_fieldsZmsg_copy� internationalZbytesmsg�gZflatmsgr���r���r����send_message���sV���� � � � � �(�zSMTP.send_messagec�����������������C���sT���z4|�j�}d�|�_�|r|����W�|�j}d�|�_|rP|����n|�j}d�|�_|rN|����0�d�S�r���)rU���rC���rj���)r���rU���rj���r���r���r���rC������s���� �z SMTP.closec�����������������C���s.���|���d�}d��|�_|�_i�|�_d|�_|�����|S�)N�quitF)rO���r����r����r>���r����rC���)r����resr���r���r���r�����s���� z SMTP.quit)ra���r���N)r%���)r%���)r%���)r%���)r%���)r���)r���)N)N)N)NNN)r���r���)NNr���r���)1r���r���r���rR���rj���rU���r����r����r����r����� SMTP_PORTrh���rE����_GLOBAL_DEFAULT_TIMEOUTr ���rM���rQ���rS���r\���r`���rB���rt���rz���rk���rO���r����r8���r����r����r����r����r����r����r����r5���r����r����r����r����r����r����r����r����r����r����r����r��rC���r��r���r���r���r���r�������sd���� 0 ! 1 3 0 B 8��� h��� M r���c�����������������������s<���e�Zd�ZeZdddddejddfdd�Z��fdd�Z���Z S�)�SMTP_SSLr%���r���Nc ����������� ������C���s����|d�ur|d�urt�d��|d�ur0|d�ur0t�d��|d�us@|d�urVdd�l} | �dtd��||�_||�_|d�u�rxtj||d�}||�_t � |�|||||��d�S�)Nr����r����r���r����r����r����)r^���r����r����r����r����r����r����r����r����r���r ���) r���rJ���rK���rD���r����r����r=���r@���r����r����r���r���r���r �����s&�������zSMTP_SSL.__init__c��������������������s@���|�j�dkr|��d||f��t���|||�}|�jj||�jd�}|S�)Nr���rc���r����)rR���r\����superr`���r����r����r<���)r���rJ���rK���r=���Z new_socket�� __class__r���r���r`�����s���� �zSMTP_SSL._get_socket) r���r���r���� SMTP_SSL_PORTrh���rE���r��r ���r`���� __classcell__r���r���r ��r���r�����s���� r��i���c�����������������������s<���e�Zd�ZdZdeddejf��fdd� Zd ��fdd � Z���Z S�)�LMTPZlhlor%���Nc��������������������s���t���j|||||d��d�S�)N)rD���r@���r=���)r��r ���)r���rJ���rK���rD���r@���r=���r ��r���r���r ���<��s�����z LMTP.__init__ra���r���c��������������������s����|d�dkrt���j|||d�S�|�jd�ur6|�js6td��zBt�tjtj�|�_|�jtjurd|�j� |�j��d�|�_ |�j�|��W�n@�ty����|�jdkr�|�� d|��|�jr�|�j����d�|�_��Y�n0�|����\}}|�jdkr�|�� d|��||fS�)Nr����/)r@���r]���z connect fail:rc���)r��rB���r=���r^���rE����AF_UNIX�SOCK_STREAMrj���r��� settimeoutrU���rg���rR���r\���rC���rk���)r���rJ���rK���r@���r���r���r ��r���r���rB���B��s*���� zLMTP.connect)ra���r���N) r���r���r���r����� LMTP_PORTrE���r��r ���rB���r��r���r���r ��r���r ��,��s ����r ���__main__c�����������������C���s(���t�j�|�d���t�j����t�j������S�)Nz: )rY����stdout�write�flush�stdinr����r*���)�promptr���r���r���r��a��s���� r��r����r�����,zEnter message, end with ^D:r%���zMessage length is %dra���rT���)@rE���r����r1���Zemail.utilsr'���Z email.messageZemail.generatorr����r����r����rW���rY���Zemail.base64mimer���r�����__all__r��r��r3���r����r����r�����compile�Ir����rg���r���r���r���r���r���r���r ���r ���r���r���r ���r.���r���r6���r7���r�����ImportErrorr����r���r��r����r��r ��r���r��Zfromaddrr����ZtoaddrsrV���r���r��r����r����r����ZserverrS���r����r��r���r���r���r����<module>,���s���� ������</ 4