<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]h                 @   sQ  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 g Z d Z d Z d Z d Z d Z e j d e j  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z  Gd d
   d
 e  Z! Gd d   d e  Z" d  d   Z# d! d"   Z$ d# d   Z% d$ d%   Z& d& d'   Z' y d  d l( Z( Wn e) k
 r3d( Z* Yn Xd) Z* Gd* d   d  Z+ e* rvGd+ d,   d, e+  Z, e j- d,  d- Z. Gd. d/   d/ e+  Z/ e0 d0 k rMd1 d2   Z1 e1 d3  Z2 e1 d4  j3 d5  Z4 e5 d6  d7 Z6 x% e j7 j8   Z9 e9 rPe6 e9 Z6 qWe5 d8 e: e6   e+ d9  Z; e; j< d:  e; j= e2 e4 e6  e; j>   d S);    N)body_encodeSMTPException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/python35/lib64/python3.5/smtplib.pyr   G   s   c               @   s   e  Z d  Z d S)SMTPNotSupportedErrorN)r   r   r   r   r   r   r   r   J   s   r   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   s1   | |  _  | |  _ | |  _ | | | 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   sS   t  j j |   \ } } | | f d k rK |  j   j d  rC |  Sd |  Sd | S)N <z<%s>)r   r   )emailutils	parseaddrstrip
startswith)
addrstringdisplaynameaddrr   r   r   r      s    c             C   s2   t  j j |   \ } } | | f d k r. |  S| S)Nr   )r   r   )r!   r"   r#   )r&   r'   r(   r   r   r   
_addr_only   s    r)   c             C   s"   t  j d d t  j d t |    S)Nz(?m)^\.z..z(?:\r\n|\n|\r(?!\n)))resubCRLF)datar   r   r   r      s    c             C   s   t  j d d |   S)Ns   (?m)^\.s   ..)r*   r+   )Zbindatar   r   r   _quote_periods   s    r.   c             C   s   t  j d t |   S)Nz(?:\r\n|\n|\r(?!\n)))r*   r+   r,   )r-   r   r   r   	_fix_eols   s    r/   FTc               @   s8  e  Z d  Z d Z d Z d Z d Z d Z d Z e	 Z
 d d d e j d d d  Z d d   Z d	 d
   Z d d   Z d d   Z d d   Z d d d d d  Z d d   Z d d d  Z d d   Z d d d  Z d d d  Z d d d  Z d  d!   Z d d" d#  Z d$ d%   Z d& d'   Z d( d)   Z g  d* d+  Z g  d, d-  Z  d. d/   Z! d0 d1   Z" e" Z# d2 d3   Z$ d4 d5   Z% d6 d7 d8 d9  Z& d d: d;  Z' d d< d=  Z( d d> d?  Z) d6 d7 d@ dA  Z* d d d dB dC  Z+ g  g  dD dE  Z, d d g  i  dF dG  Z- dH dI   Z. dJ dK   Z/ d S)Lr   r   Nehlor   c       
      C   s   | |  _  | |  _ i  |  _ d |  _ | |  _ | rp |  j | |  \ } } | d k rp |  j   t | |   | d  k	 r | |  _ nh t	 j
   } d | k r | |  _ nD d }	 y t	 j t	 j    }	 Wn t	 j k
 r Yn Xd |	 |  _ d  S)Nascii   .z	127.0.0.1z[%s])_hosttimeoutesmtp_featurescommand_encodingsource_addressconnectcloser	   local_hostnamesocketgetfqdngethostbynamegethostname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   s_   zM y4 |  j  d  \ } } | d k r6 t | |   Wn t k
 rK Yn XWd  |  j   Xd  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   rH   r   r   r   set_debuglevel  s    zSMTP.set_debuglevelc             G   sN   |  j  d k r7 t t j j   j   | d t j n t | d t j  d  S)N   file)rH   printdatetimeZnowtimesysstderr)r   r   r   r   r   _print_debug'  s    (zSMTP._print_debugc             C   sG   |  j  d k r+ |  j d | | f |  j  t j | | f | |  j  S)Nr   zconnect: to)rH   rQ   r8   r<   create_connection)r   rA   rB   r5   r   r   r   _get_socket-  s    zSMTP._get_socket	localhostc             C   s>  | r | |  _  | r | j d  | j d  k r | j d  } | d k r | d  |  | | d d   } } y t |  } Wn t k
 r t d   Yn X| s |  j } |  j d k r |  j d | | f  |  j	 | | |  j
  |  _ d  |  _ |  j   \ } } |  j d k r4|  j d t |   | | f S)N:r   rJ   znonnumeric portzconnect:)r8   findrfindint
ValueErrorOSErrordefault_portrH   rQ   rS   r5   sockrK   getreplyrepr)r   rA   rB   r8   ir   r   r   r   r   r9   5  s(    	%%		zSMTP.connectc             C   s   |  j  d k r% |  j d t |   t |  d  r |  j r t | t  r^ | j |  j  } y |  j j	 |  Wq t
 k
 r |  j   t d   Yq Xn t d   d  S)Nr   zsend:r\   zServer not connectedzplease run connect() first)rH   rQ   r^   hasattrr\   
isinstancestrencoder7   sendallrZ   r:   r   )r   sr   r   r   sendW  s    
z	SMTP.sendc             C   sC   | d k r d | t  f } n d | | t  f } |  j |  d  S)Nr   z%s%sz%s %s%s)r,   rf   )r   cmdr   rb   r   r   r   putcmdi  s    zSMTP.putcmdc             C   s  g  } |  j  d  k r* |  j j d  |  _  xEy |  j  j t d  } WnE t k
 r } z% |  j   t d t |    WYd  d  } ~ Xn X| s |  j   t d   |  j	 d k r |  j
 d t |   t |  t k r |  j   t d d   | j | d	 d   j d
   | d  d  } y t |  } Wn t k
 rVd } PYn X| d d	  d k r- Pq- Wd j |  } |  j	 d k r|  j
 d | | f  | | f S)NrbrJ   z Connection unexpectedly closed: zConnection unexpectedly closedr   zreply:i  zLine too long.   s    	
      -s   
zreply: retcode (%s); Msg: %a)rK   r\   makefilereadline_MAXLINErZ   r:   r   rb   rH   rQ   r^   lenr   appendr$   rX   rY   join)r   resplineer   Zerrcodeerrmsgr   r   r   r]   q  s>    
#

 zSMTP.getreplyc             C   s   |  j  | |  |  j   S)N)rh   r]   )r   rg   r   r   r   r   rE     s    z
SMTP.docmdc             C   s>   |  j  d | p |  j  |  j   \ } } | |  _ | | f S)Nhelo)rh   r;   r]   	helo_resp)r   namer   r   r   r   r   rx     s    	z	SMTP.heloc       
      C   s  i  |  _  |  j |  j | p! |  j  |  j   \ } } | d k rk t |  d k rk |  j   t d   | |  _ | d k r | | f Sd |  _	 |  j j
 d  j d  } | d =x | D] } t j |  } | r|  j  j d d  d	 | j d  d |  j  d <q t j d
 |  } | r | j d  j   } | j | j d  d   j   }	 | d k r|  j  j | d  d	 |	 |  j  | <q |	 |  j  | <q W| | f S)NrJ   r   zServer not connected   zlatin-1
authr    z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?featurerm   )r6   rh   ehlo_msgr;   r]   rq   r:   r   	ehlo_resp
does_esmtpdecodesplitOLDSTYLE_AUTHmatchgetgroupsr*   grouplowerstringendr$   )
r   rz   r   r   rt   eachZ
auth_matchmr   paramsr   r   r   r0     s2    	
	
	1"'z	SMTP.ehloc             C   s   | j    |  j k S)N)r   r6   )r   optr   r   r   has_extn  s    zSMTP.has_extnc             C   s   |  j  d |  |  j   d S)NhelprJ   )rh   r]   )r   r   r   r   r   r     s    z	SMTP.helpc             C   s   d |  _  |  j d  S)Nr1   rset)r7   rE   )r   r   r   r   r     s    	z	SMTP.rsetc             C   s'   y |  j    Wn t k
 r" Yn Xd  S)N)r   r   )r   r   r   r   _rset  s    z
SMTP._rsetc             C   s   |  j  d  S)Nnoop)rE   )r   r   r   r   r      s    z	SMTP.noopc             C   s   d } | rh |  j  rh t d d   | D  rU |  j d  rI d |  _ n t d   d d j |  } |  j d d	 t |  | f  |  j   S)
Nr   c             s   s!   |  ] } | j    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 serverr~   mailz	FROM:%s%s)	r   anyr   r7   r   rs   rh   r   r]   )r   r   options
optionlistr   r   r   r     s    		 z	SMTP.mailc             C   sR   d } | r( |  j  r( d d j |  } |  j d d t |  | f  |  j   S)Nr   r~   rcptzTO:%s%s)r   rs   rh   r   r]   )r   Zrecipr   r   r   r   r   r     s
     z	SMTP.rcptc             C   s  |  j  d  |  j   \ } } |  j d k rD |  j d | | f  | d k rb t | |   n t | t  r t |  j d  } t	 |  } | d d   t
 k r | t
 } | d t
 } |  j |  |  j   \ } } |  j d k r|  j d | | f  | | f Sd  S)	Nr-   r   zdata:ib  r1         .)rh   r]   rH   rQ   r   ra   rb   r/   rc   r.   bCRLFrf   )r   r   r   replqr   r   r   r-   !  s"    

z	SMTP.datac             C   s    |  j  d t |   |  j   S)Nvrfy)rh   r)   r]   )r   addressr   r   r   verify>  s    zSMTP.verifyc             C   s    |  j  d t |   |  j   S)Nexpn)rh   r)   r]   )r   r   r   r   r   r   E  s    z	SMTP.expnc             C   s   |  j  d  k r |  j d  k r d |  j   d k o? d k n s |  j   \ } } d | k om d k n s t | |   d  S)N   r   i+  )ry   r   r0   rx   r
   )r   r   rt   r   r   r   ehlo_or_helo_if_neededL  s
    &zSMTP.ehlo_or_helo_if_neededinitial_response_okTc      	      C   s   | j    } | r |   n d  } | d  k	 rk t | j d  d d } |  j d | d |  \ } } n |  j d |  \ } } | d k r t j |  } t | |  j d  d d } |  j |  \ } } | d	 k r | | f St | |   d  S)
Nr1   Zeolr   ZAUTHr~   iN       )r   r   )upperencode_base64rc   rE   base64Zdecodebytesr   )	r   Z	mechanismZ
authobjectr   Zinitial_responseresponser   rt   	challenger   r   r   r}   ]  s    #
z	SMTP.authc             C   s@   | d  k r d  S|  j  d t j |  j j d  | d  j   S)Nr~   r1   md5)userhmacZHMACpasswordrc   	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 Sd  S)N)r   r   )r   r   r   r   r   
auth_login  s    zSMTP.auth_loginc               s+  |  j    |  j d  s% t d   |  j d j     d d d g }   f d d   | D } | sr t d   | | |  _ |  _ x | D] } d	 | j   j	 d
 d  } yA |  j
 | t |  |  d | \ } }	 | d k r | |	 f SWq t k
 r}
 z |
 } WYd  d  }
 ~
 Xq Xq W|  d  S)Nr}   z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINc                s"   g  |  ] } |   k r |  q Sr   r   )r   r}   )advertised_authlistr   r   
<listcomp>  s   	 zSMTP.login.<locals>.<listcomp>z(No suitable authentication method found.Zauth_-_r   r     )r   r   )r   r   r   r6   r   r   r   r   r   replacer}   getattrr   )r   r   r   r   Zpreferred_authsZauthlistZ
authmethodZmethod_namer   rt   rv   Zlast_exceptionr   )r   r   login  s*    
	z
SMTP.loginc             C   s+  |  j    |  j d  s% t d   |  j d  \ } } | d k rt sX t d   | d  k	 r| | d  k	 r| t d   | d  k	 r | d  k	 r t d   | d  k r t j d | d	 |  } | j	 |  j
 d
 |  j |  _
 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 exclusivecertfilekeyfileserver_hostnamer   )r   r   r   rE   	_have_sslRuntimeErrorrY   ssl_create_stdlib_contextwrap_socketr\   r4   rK   ry   r   r6   r   r   )r   r   r   contextrt   Zreplyr   r   r   r     s0    
						zSMTP.starttlsc             C   s  |  j    g  } t | t  r4 t |  j d  } |  j r |  j d  rc | j d t |   x | D] } | j |  qj W|  j	 | |  \ } }	 | d k r | d k r |  j
   n
 |  j   t | |	 |   i  }
 t | t  r | g } xp | D]h } |  j | |  \ } }	 | d k rE| d k rE| |	 f |
 | <| d k r |  j
   t |
   q Wt |
  t |  k r|  j   t |
   |  j |  \ } }	 | d k r| d k r|  j
   n
 |  j   t | |	   |
 S)Nr1   sizezsize=%dr{   i     )r   ra   rb   r/   rc   r   r   rr   rq   r   r:   r   r   r   r   r-   r   )r   	from_addrto_addrsr   mail_optionsrcpt_optionsZ
esmtp_optsoptionr   rt   Zsenderrsr   r   r   r   sendmail  sF    @
	
	


zSMTP.sendmailc             C   s  |  j    | j d  } | d  k r. d } n' t |  d k rI d } n t d   | d  k r | d | k r | | d n | | d } | d  k r d d	   | | d
 | | d | | d f D } d d	   t j j |  D } t j |  }	 |	 d =|	 d =d }
 y# d j | f |   j	 d  Wn3 t
 k
 rg|  j d  s]t d   d }
 Yn Xt j   x } |
 rt j j | d | j j d d  } | d d g 7} n t j j |  } | j |	 d d | j   } Wd  QRX|  j | | | | |  S)NzResent-Dater   rJ   zResent-z0message has more than one 'Resent-' header blockZSenderFromc             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)rJ   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policyutf8ZSMTPUTF8zBODY=8BITMIMElinesepz
)r   Zget_allrq   rY   r!   r"   Zgetaddressescopyrs   rc   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_messagex  sH    
		#		zSMTP.send_messagec             C   sP   z& |  j  } d  |  _  | r% | j   Wd  |  j } d  |  _ | rK | j   Xd  S)N)rK   r:   r\   )r   rK   r\   r   r   r   r:     s    				z
SMTP.closec             C   s?   |  j  d  } d  |  _ |  _ i  |  _ d |  _ |  j   | S)NquitF)rE   r   ry   r6   r   r:   )r   resr   r   r   r     s    		
z	SMTP.quit)0r   r   r   rH   rK   ry   r   r   r   	SMTP_PORTr[   r<   _GLOBAL_DEFAULT_TIMEOUTr   rC   rG   rI   rQ   rS   r9   rf   rh   r]   rE   rx   r0   r   r   r   r   r   r   r   r-   r   r   r   r   r}   r   r   r   r   r   r   r   r:   r   r   r   r   r   r      s\   	-
	"1
3'	B4gKc            
   @   sI   e  Z d  Z e Z d d d d d e j d d d d  Z d d   Z d S)SMTP_SSLr   r   Nc	       	      C   s   | d  k	 r$ | d  k	 r$ t  d   | d  k	 rH | d  k	 rH t  d   | |  _ | |  _ | d  k r~ t j d | d |  } | |  _ t j |  | | | | |  d  S)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiver   r   )rY   r   r   r   r   r   r   r   )	r   rA   rB   r;   r   r   r5   r8   r   r   r   r   r     s    				zSMTP_SSL.__init__c             C   sb   |  j  d k r% |  j d | | f  t j | | f | |  j  } |  j j | d |  j } | S)Nr   zconnect:r   )rH   rQ   r<   rR   r8   r   r   r4   )r   rA   rB   r5   Z
new_socketr   r   r   rS      s    zSMTP_SSL._get_socket)	r   r   r   SMTP_SSL_PORTr[   r<   r   r   rS   r   r   r   r   r     s   	r   i  c               @   sC   e  Z d  Z d Z d e d d d d  Z d d d d d	  Z d S)
LMTPZlhlor   Nc             C   s#   t  j |  | | d | d | d  S)Nr;   r8   )r   r   )r   rA   rB   r;   r8   r   r   r   r      s    zLMTP.__init__rT   r   c             C   s   | d d k r) t  j |  | | d | Sy8 t j t j t j  |  _ d  |  _ |  j j |  WnS t k
 r |  j d k r |  j	 d |  |  j r |  j j
   d  |  _   Yn X|  j   \ } } |  j d k r |  j	 d |  | | f S)Nr   /r8   zconnect fail:zconnect:)r   r9   r<   AF_UNIXSOCK_STREAMr\   rK   rZ   rH   rQ   r:   r]   )r   rA   rB   r8   r   r   r   r   r   r9   &  s"    			zLMTP.connect)r   r   r   r   	LMTP_PORTr   r9   r   r   r   r   r     s   	r   __main__c             C   s4   t  j j |  d  t  j j   t  j j   j   S)Nz: )rO   stdoutwriteflushstdinro   r$   )promptr   r   r   r   @  s    r   r   r   ,zEnter message, end with ^D:r   zMessage length is %drT   rJ   )?r<   r   r*   Zemail.utilsr!   Zemail.messageZemail.generatorr   r   r   rM   rO   Zemail.base64mimer   r   __all__r   r   r,   r   rp   compileIr   rZ   r   r   r   r   r   r   r   r	   r
   r   r   r)   r   r.   r/   r   ImportErrorr   r   r   rr   r   r   r   r   Zfromaddrr   ZtoaddrsrL   r   r   ro   ru   rq   ZserverrI   r   r   r   r   r   r   <module>,   s   				   !,/
