£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>
B
    YI~d                 @   sl  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ ddddddd	d
dddddgZdZdZdZdZdZedejZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd	 d	eZG dd
 d
eZ G dd deZ!G dd deZ"d d Z#d!d" Z$d#d Z%d$d% Z&d&d' Z'yd dl(Z(W n e)k
r   d(Z*Y nX d)Z*G d*d dZ+e*rG d+d, d,e+Z,e-d, d-Z.G d.d/ d/e+Z/e0d0krhd1d2 Z1e1d3Z2e1d43d5Z4e5d6 d7Z6x ej78 Z9e9s"P e6e9 Z6qW e5d8e:e6  e+d9Z;e;<d: e;=e2e4e6 e;>  dS );    N)body_encodeSMTPExceptionSMTPNotSupportedErrorSMTPServerDisconnectedSMTPResponseExceptionSMTPSenderRefusedSMTPRecipientsRefusedSMTPDataErrorSMTPConnectErrorSMTPHeloErrorSMTPAuthenticationError	quoteaddr	quotedataSMTP   i  z
s   
i    z	auth=(.*)c               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   ,/opt/alt/python37/lib64/python3.7/smtplib.pyr   G   s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   J   s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   Q   s   c               @   s   e Zd Zdd ZdS )r   c             C   s   || _ || _||f| _d S )N)	smtp_code
smtp_errorargs)selfcodemsgr   r   r   __init__b   s    zSMTPResponseException.__init__N)r   r   r   r   r   r   r   r   r   Y   s   	c               @   s   e Zd Zdd ZdS )r   c             C   s"   || _ || _|| _|||f| _d S )N)r   r   senderr   )r   r   r   r   r   r   r   r   n   s    zSMTPSenderRefused.__init__N)r   r   r   r   r   r   r   r   r   g   s   c               @   s   e Zd Zdd ZdS )r   c             C   s   || _ |f| _d S )N)
recipientsr   )r   r   r   r   r   r   |   s    zSMTPRecipientsRefused.__init__N)r   r   r   r   r   r   r   r   r   t   s   c               @   s   e Zd ZdS )r	   N)r   r   r   r   r   r   r   r	      s   c               @   s   e Zd ZdS )r
   N)r   r   r   r   r   r   r   r
      s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r      s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r      s   c             C   s>   t j| \}}||fdkr6|  dr.| S d|  S d| S )N) r   <z<%s>)emailutils	parseaddrstrip
startswith)
addrstringdisplaynameaddrr   r   r   r      s    c             C   s$   t j| \}}||fdkr | S |S )N)r   r   )r!   r"   r#   )r&   r'   r(   r   r   r   
_addr_only   s    r)   c          	   C   s   t ddt dt| S )Nz(?m)^\.z..z(?:\r\n|\n|\r(?!\n)))resubCRLF)datar   r   r   r      s    c             C   s   t dd| S )Ns   (?m)^\.s   ..)r*   r+   )Zbindatar   r   r   _quote_periods   s    r.   c             C   s   t dt| S )Nz(?:\r\n|\n|\r(?!\n)))r*   r+   r,   )r-   r   r   r   	_fix_eols   s    r/   FTc               @   sr  e Zd ZdZdZdZdZdZdZe	Z
dddejdfddZdd Zd	d
 Zdd Zdd Zdd ZdMddZdd ZdNddZdd ZdOddZdPddZdQddZd d! ZdRd"d#Zd$d% Zd&d' Zd(d) ZdSd+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 Z/dS )[r   r   Nehlor   c       
      C   s   || _ || _i | _d| _|| _|rL| ||\}}|dkrL|   t|||d k	r\|| _nPt	
 }d|krt|| _n8d}	yt	t	 }	W n t	jk
r   Y nX d|	 | _d S )Nascii   .z	127.0.0.1z[%s])_hosttimeoutesmtp_featurescommand_encodingsource_addressconnectcloser
   local_hostnamesocketZgetfqdnZgethostbynameZgethostnameZgaierror)
r   hostportr;   r5   r8   r   r   Zfqdnr(   r   r   r   r      s*    
zSMTP.__init__c             C   s   | S )Nr   )r   r   r   r   	__enter__  s    zSMTP.__enter__c             G   sN   z>y$|  d\}}|dkr$t||W n tk
r:   Y nX W d |   X d S )NZQUIT   )docmdr   r   r:   )r   r   r   messager   r   r   __exit__  s    
zSMTP.__exit__c             C   s
   || _ d S )N)
debuglevel)r   rD   r   r   r   set_debuglevel  s    zSMTP.set_debuglevelc             G   s@   | j dkr,ttj  f|dtji nt|dtji d S )N   file)rD   printdatetimeZnowZtimesysstderr)r   r   r   r   r   _print_debug'  s    
"zSMTP._print_debugc             C   s2   | j dkr| d||f| j t||f|| jS )Nr   zconnect: to)rD   rL   r8   r<   create_connection)r   r=   r>   r5   r   r   r   _get_socket-  s    
zSMTP._get_socket	localhostc             C   s   |r
|| _ |s||d|dkr||d}|dkr||d | ||d d   }}yt|}W n tk
rz   tdY nX |s| j}| jdkr| d||f | 	||| j
| _d | _|  \}}| jdkr| dt| ||fS )N:r   rF   znonnumeric portzconnect:)r8   findrfindint
ValueErrorOSErrordefault_portrD   rL   rN   r5   sockrG   getreplyrepr)r   r=   r>   r8   ir   r   r   r   r   r9   5  s(    


zSMTP.connectc             C   s   | j dkr| dt| t| drx| jrxt|tr@|| j}y| j	| W q t
k
rt   |   tdY qX ntdd S )Nr   zsend:rW   zServer not connectedzplease run connect() first)rD   rL   rY   hasattrrW   
isinstancestrencoder7   ZsendallrU   r:   r   )r   sr   r   r   sendW  s    

z	SMTP.sendc             C   sd   |dkr|}n| d| }d|ks,d|krN| dd dd}td| | | t  d S )Nr    
z\nz\rz=command and arguments contain prohibited newline characters: )replacerT   r`   r,   )r   cmdr   r_   r   r   r   putcmdi  s    zSMTP.putcmdc          
   C   sP  g }| j d kr| jd| _ x y| j td }W n: tk
rn } z|   tdt| W d d }~X Y nX |s|   td| j	dkr| 
dt| t|tkr|   tdd||d	d  d
 |d d }yt|}W n tk
r   d}P Y nX |dd	 dkr P q W d|}| j	dkrH| 
d||f  ||fS )NrbrF   z Connection unexpectedly closed: zConnection unexpectedly closedr   zreply:i  zLine too long.   s    	
      -   
zreply: retcode (%s); Msg: %a)rG   rW   Zmakefilereadline_MAXLINErU   r:   r   r]   rD   rL   rY   lenr   appendr$   rS   rT   join)r   resplineer   Zerrcodeerrmsgr   r   r   rX   v  s>    



zSMTP.getreplyc             C   s   |  || |  S )N)rf   rX   )r   re   r   r   r   r   rA     s    z
SMTP.docmdc             C   s,   |  d|p| j |  \}}|| _||fS )Nhelo)rf   r;   rX   	helo_resp)r   namer   r   r   r   r   rv     s    z	SMTP.heloc       
      C   s2  i | _ | | j|p| j |  \}}|dkrJt|dkrJ|   td|| _|dkr`||fS d| _	| j
dd}|d= x|D ]}t|}|r| j dd	d
 |dd  | j d< qtd|}|r|d }|j|dd   }	|dkr| j |d	d
 |	 | j |< q|	| j |< qW ||fS )Nrj   r   zServer not connected   rF   zlatin-1rc   authr   ra   z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?feature)r6   rf   ehlo_msgr;   rX   ro   r:   r   	ehlo_resp
does_esmtpdecodesplitOLDSTYLE_AUTHmatchgetgroupsr*   grouplowerstringendr$   )
r   rx   r   r   rr   eachZ
auth_matchmr{   paramsr   r   r   r0     s2    

&
z	SMTP.ehloc             C   s   |  | jkS )N)r   r6   )r   optr   r   r   has_extn  s    zSMTP.has_extnc             C   s   |  d| |  d S )NhelprF   )rf   rX   )r   r   r   r   r   r     s    z	SMTP.helpc             C   s   d| _ | dS )Nr1   rset)r7   rA   )r   r   r   r   r     s    z	SMTP.rsetc             C   s&   y|    W n tk
r    Y nX d S )N)r   r   )r   r   r   r   _rset  s    z
SMTP._rsetc             C   s
   |  dS )Nnoop)rA   )r   r   r   r   r     s    z	SMTP.noopr   c             C   sh   d}|rH| j rHtdd |D r:| dr2d| _ntddd| }| dd	t||f  |  S )
Nr   c             s   s   | ]}|  d kV  qdS )smtputf8N)r   ).0xr   r   r   	<genexpr>  s    zSMTP.mail.<locals>.<genexpr>r   zutf-8z SMTPUTF8 not supported by serverra   mailz	FROM:%s%s)	r~   anyr   r7   r   rq   rf   r   rX   )r   r   options
optionlistr   r   r   r   	  s    	

z	SMTP.mailc             C   s<   d}|r| j rdd| }| ddt||f  |  S )Nr   ra   rcptzTO:%s%s)r~   rq   rf   r   rX   )r   Zrecipr   r   r   r   r   r     s
    
z	SMTP.rcptc             C   s   |  d |  \}}| jdkr0| d||f |dkrDt||n|t|tr\t|d}t	|}|dd  t
kr||t
 }|d t
 }| | |  \}}| jdkr| d||f ||fS d S )Nr-   r   zdata:ib  r1      .)rf   rX   rD   rL   r	   r\   r]   r/   r^   r.   bCRLFr`   )r   r   r   replqr   r   r   r-   &  s"    





z	SMTP.datac             C   s   |  dt| |  S )Nvrfy)rf   r)   rX   )r   addressr   r   r   verifyC  s    zSMTP.verifyc             C   s   |  dt| |  S )Nexpn)rf   r)   rX   )r   r   r   r   r   r   J  s    z	SMTP.expnc             C   sb   | j d kr^| jd kr^d|  d   kr0dks^n |  \}}d|  krRdks^n t||d S )N   r   i+  )rw   r}   r0   rv   r   )r   r   rr   r   r   r   ehlo_or_helo_if_neededQ  s
    zSMTP.ehlo_or_helo_if_neededT)initial_response_okc      	      C   s   |  }|r| nd }|d k	rJt|ddd}| d|d | \}}n| d|\}}|dkrt|}t||ddd}| |\}}|dkr||fS t||d S )Nr1   r   )ZeolZAUTHra   iN  )   i  )upperencode_base64r^   rA   base64Zdecodebytesr   )	r   Z	mechanismZ
authobjectr   Zinitial_responseZresponser   rr   	challenger   r   r   rz   b  s    
z	SMTP.authc             C   s0   |d krd S | j d t| jd|d  S )Nra   r1   Zmd5)userhmacZHMACpasswordr^   Z	hexdigest)r   r   r   r   r   auth_cram_md5  s    zSMTP.auth_cram_md5c             C   s   d| j | jf S )Nz %s %s)r   r   )r   r   r   r   r   
auth_plain  s    zSMTP.auth_plainc             C   s   |d kr| j S | jS d S )N)r   r   )r   r   r   r   r   
auth_login  s    zSMTP.auth_loginc               s   |    | dstd| jd   dddg} fdd|D }|sPtd|| | _| _xv|D ]n}d	| 	d
d }y.| j
|t| ||d\}}	|dkr||	fS W qd tk
r }
 z|
}W d d }
~
X Y qdX qdW |d S )Nrz   z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINc                s   g | ]}| kr|qS r   r   )r   rz   )advertised_authlistr   r   
<listcomp>  s    zSMTP.login.<locals>.<listcomp>z(No suitable authentication method found.Zauth_-_)r   )r   i  )r   r   r   r6   r   r   r   r   r   rd   rz   getattrr   )r   r   r   r   Zpreferred_authsZauthlistZ
authmethodZmethod_namer   rr   rt   Zlast_exceptionr   )r   r   login  s*    



z
SMTP.loginc             C   s   |    | dstd| d\}}|dkrts<td|d k	rT|d k	rTtd|d k	rl|d k	rltd|d k	s||d k	rdd l}|d	t	d
 |d krt
j||d}|j| j| jd| _d | _d | _d | _i | _d| _n
t||||fS )Nstarttlsz+STARTTLS extension not supported by server.ZSTARTTLSr2   z&No SSL support included in this Pythonz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiver   zAkeyfile and certfile are deprecated, use a custom context instead   )certfilekeyfile)server_hostname)r   r   r   rA   	_have_sslRuntimeErrorrT   warningswarnDeprecationWarningssl_create_stdlib_contextwrap_socketrW   r4   rG   rw   r}   r6   r~   r   )r   r   r   contextrr   Zreplyr   r   r   r   r     s8    

zSMTP.starttlsc             C   sf  |    g }t|tr$t|d}| jr^| drF|dt|  x|D ]}|| qLW | 	||\}}	|dkr|dkr| 
  n|   t||	|i }
t|tr|g}xP|D ]H}| ||\}}	|dkr|dkr||	f|
|< |dkr| 
  t|
qW t|
t|kr$|   t|
| |\}}	|dkrb|dkrP| 
  n|   t||	|
S )Nr1   sizezsize=%dry   i     )r   r\   r]   r/   r^   r~   r   rp   ro   r   r:   r   r   r   r   r-   r	   )r   	from_addrto_addrsr   mail_optionsrcpt_optionsZ
esmtp_optsoptionr   rr   Zsenderrsr   r   r   r   sendmail  sF    @









zSMTP.sendmailc          	   C   s  |    |d}|d kr d}nt|dkr2d}ntd|d kr||d |krZ||d  n
||d  }tj|gd d }|d krd	d
 ||d  ||d  ||d  fD }dd
 tj|D }t|}	|	d= |	d= d}
yd|f|	d W n. t
k
r(   | ds tdd}
Y nX t R}|
r^tjj||jjddd}|d}ntj|}|j|	dd | }W d Q R X | |||||S )NzResent-Dater   rF   zResent-z0message has more than one 'Resent-' header blockZSenderFromr   c             S   s   g | ]}|d k	r|qS )Nr   )r   fr   r   r   r     s    z%SMTP.send_message.<locals>.<listcomp>ToZBccZCcc             S   s   g | ]}|d  qS )rF   r   )r   ar   r   r   r     s    z
Resent-BccFr1   r   zOne or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityT)utf8)policySMTPUTF8BODY=8BITMIMEz
)linesep)r   r   )r   Zget_allro   rT   r!   r"   Zgetaddressescopyrq   r^   UnicodeEncodeErrorr   r   ioBytesIO	generatorZBytesGeneratorr   ZcloneZflattengetvaluer   )r   r   r   r   r   r   ZresentZheader_prefixZaddr_fieldsZmsg_copyinternationalZbytesmsggZflatmsgr   r   r   send_message  sJ    





zSMTP.send_messagec             C   s<   z| j }d | _ |r|  W d | j}d | _|r6|  X d S )N)rG   r:   rW   )r   rG   rW   r   r   r   r:     s    z
SMTP.closec             C   s.   |  d}d  | _| _i | _d| _|   |S )NquitF)rA   r}   rw   r6   r~   r:   )r   Zresr   r   r   r     s    
z	SMTP.quit)rO   r   N)r   )r   )r   )r   )r   )r   )r   )N)N)N)NNN)r   r   )NNr   r   )0r   r   r   rD   rG   rw   r|   r}   r~   	SMTP_PORTrV   r<   _GLOBAL_DEFAULT_TIMEOUTr   r?   rC   rE   rL   rN   r9   r`   rf   rX   rA   rv   r0   r   r   r   r   r   r   r   r-   r   r   r   r   rz   r   r   r   r   r   r   r   r:   r   r   r   r   r   r      s\   -
	
"
1



3


'
	

B
8 
g 
Lc               @   s4   e Zd ZeZdddddejddfddZdd ZdS )SMTP_SSLr   r   Nc	       
      C   s   |d k	r|d k	rt d|d k	r0|d k	r0t d|d k	s@|d k	rVdd l}	|	dtd || _|| _|d krxtj||d}|| _t	
| ||||| d S )Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiver   zAkeyfile and certfile are deprecated, use a custom context insteadr   )r   r   )rT   r   r   r   r   r   r   r   r   r   r   )
r   r=   r>   r;   r   r   r5   r8   r   r   r   r   r   r     s     zSMTP_SSL.__init__c             C   sD   | j dkr| d||f t||f|| j}| jj|| jd}|S )Nr   zconnect:)r   )rD   rL   r<   rM   r8   r   r   r4   )r   r=   r>   r5   Z
new_socketr   r   r   rN     s    

zSMTP_SSL._get_socket)	r   r   r   SMTP_SSL_PORTrV   r<   r   r   rN   r   r   r   r   r     s   r   i  c               @   s,   e Zd ZdZdeddfddZd
dd	ZdS )LMTPZlhlor   Nc             C   s   t j| ||||d d S )N)r;   r8   )r   r   )r   r=   r>   r;   r8   r   r   r   r   .  s    zLMTP.__init__rO   r   c             C   s   |d dkrt j| |||dS y(ttjtj| _d | _| j| W nB tk
r   | jdkrl| 	d| | jr|| j
  d | _ Y nX |  \}}| jdkr| 	d| ||fS )Nr   /)r8   zconnect fail:zconnect:)r   r9   r<   ZAF_UNIXZSOCK_STREAMrW   rG   rU   rD   rL   r:   rX   )r   r=   r>   r8   r   r   r   r   r   r9   4  s"    


zLMTP.connect)rO   r   N)r   r   r   r|   	LMTP_PORTr   r9   r   r   r   r   r     s   r   __main__c             C   s(   t j| d  t j  t j  S )Nz: )rJ   stdoutwriteflushstdinrm   r$   )promptr   r   r   r   N  s    
r   r   r   ,zEnter message, end with ^D:r   zMessage length is %drO   rF   )?r<   r   r*   Zemail.utilsr!   Zemail.messageZemail.generatorr   r   r   rI   rJ   Zemail.base64mimer   r   __all__r   r   r,   r   rn   compileIr   rU   r   r   r   r   r   r   r	   r
   r   r   r   r)   r   r.   r/   r   ImportErrorr   r   r   rp   r   r   r   r   Zfromaddrr   ZtoaddrsrH   r   r   rm   rs   ro   ZserverrE   r   r   r   r   r   r   <module>,   s   
	
      .0
/


