
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,aÖ¯  ã                   @   sn  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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(zd dl)Z)W n e*k
�r–   d)Z+Y nX d*Z+G d+d„ dƒZ,e+�rÊG d,d-„ d-e,ƒZ-e .d-¡ d.Z/G d/d0„ d0e,ƒZ0e1d1k�rjd2d3„ Z2e2d4ƒZ3e2d5ƒ 4d6¡Z5e6d7ƒ d8Z7ej8 9¡ Z:e:�s&�q2e7e: Z7�qe6d9e;e7ƒ ƒ e,d:ƒZ<e< =d;¡ e< >e3e5e7¡ e< ?¡  dS )<é    N)Úbody_encodeÚSMTPExceptionÚSMTPNotSupportedErrorÚSMTPServerDisconnectedÚSMTPResponseExceptionÚSMTPSenderRefusedÚSMTPRecipientsRefusedÚSMTPDataErrorÚSMTPConnectErrorÚSMTPHeloErrorÚSMTPAuthenticationErrorÚ	quoteaddrÚ	quotedataÚSMTPé   iÑ  ú
s   
i    é   z	auth=(.*)c                   @   s   e Zd ZdS )r   N©Ú__name__Ú
__module__Ú__qualname__© r   r   ú,/opt/alt/python38/lib64/python3.8/smtplib.pyr   H   s   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r   K   s   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r   R   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__c   s    zSMTPResponseException.__init__N©r   r   r   r    r   r   r   r   r   Z   s   	c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s"   || _ || _|| _|||f| _d S r   )r   r   Úsenderr   )r   r   r   r"   r   r   r   r    o   s    zSMTPSenderRefused.__init__Nr!   r   r   r   r   r   h   s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s   || _ |f| _d S r   )Ú
recipientsr   )r   r#   r   r   r   r    }   s    zSMTPRecipientsRefused.__init__Nr!   r   r   r   r   r   u   s   c                   @   s   e Zd ZdS )r	   Nr   r   r   r   r   r	   ‚   s   c                   @   s   e Zd ZdS )r
   Nr   r   r   r   r   r
   …   s   c                   @   s   e Zd ZdS )r   Nr   r   r   r   r   r   ˆ   s   c                   @   s   e Zd ZdS )r   Nr   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©Z
addrstringZdisplaynameÚaddrr   r   r   r   ’   s    c                 C   s$   t j | ¡\}}||fdkr | S |S )Nr$   )r'   r(   r)   r,   r   r   r   Ú
_addr_onlyŸ   s    r.   c              	   C   s   t  ddt  dt| ¡¡S )Nz(?m)^\.z..ú(?:\r\n|\n|\r(?!\n))©ÚreÚsubÚCRLF©Údatar   r   r   r   §   s    ÿc                 C   s   t  dd| ¡S )Ns   (?m)^\.s   ..)r1   r2   )Zbindatar   r   r   Ú_quote_periods°   s    r6   c                 C   s   t  dt| ¡S )Nr/   r0   r4   r   r   r   Ú	_fix_eols³   s    r7   FTc                   @   sv  e Zd 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„ Z0dS )[r   r   NÚehlor%   c           
      C   s¶   || _ || _i | _d| _|| _d| _|rR|  ||¡\}}|dkrR|  ¡  t||ƒ‚|d k	rb|| _	nPt
 ¡ }d|krz|| _	n8d}	zt
 t
 ¡ ¡}	W n t
jk
r¦   Y nX 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ÚsocketZgetfqdnZgethostbynameZgethostnameZgaierror)
r   ÚhostÚportrD   r=   r@   r   r   Zfqdnr-   r   r   r   r    å   s,    
zSMTP.__init__c                 C   s   | S r   r   ©r   r   r   r   Ú	__enter__  s    zSMTP.__enter__c                 G   sN   z>z$|  d¡\}}|dkr$t||ƒ‚W n tk
r:   Y nX W 5 |   ¡  X d S )NZQUITéÝ   )rC   Údocmdr   r   )r   r   r   Úmessager   r   r   Ú__exit__  s    
zSMTP.__exit__c                 C   s
   || _ d S r   )Ú
debuglevel)r   rN   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)rN   ÚprintÚdatetimeZnowÚ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)rN   rX   r@   rE   Úcreate_connection)r   rF   rG   r=   r   r   r   Ú_get_socket1  s
    
ÿzSMTP._get_socketÚ	localhostc                 C   sÜ   |r
|| _ |s|| d¡| d¡kr|| d¡}|dkr||d |… ||d d …  }}zt|ƒ}W n tk
rz   tdƒ‚Y nX |s†| j}t d| ||¡ |  	||| j
¡| _d | _|  ¡ \}}| jdkrÔ|  dt|ƒ¡ ||fS )Nú:r   rP   znonnumeric portzsmtplib.connectúconnect:)r@   ÚfindÚrfindÚintÚ
ValueErrorÚOSErrorÚdefault_portrU   ÚauditrZ   r=   ÚsockrQ   ÚgetreplyrN   rX   Úrepr)r   rF   rG   r@   Úir   r   r   r   r   rB   9  s&    

zSMTP.connectc                 C   sˆ   | j dkr|  dt|ƒ¡ | jr|t|tƒr6| | j¡}t 	d| |¡ z| j 
|¡ W q„ tk
rx   |  ¡  tdƒ‚Y q„X ntdƒ‚d S )Nr   zsend:zsmtplib.sendúServer not connectedzplease run connect() first)rN   rX   rg   re   Ú
isinstanceÚstrÚencoder?   rU   rd   Zsendallrb   rC   r   )r   Úsr   r   r   ÚsendZ  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: )Úreplacera   rn   r3   )r   Úcmdr   rm   r   r   r   Úputcmdm  s    ÿzSMTP.putcmdc              
   C   sP  g }| j d kr| j d¡| _ z| j  td ¡}W n: tk
rj } z|  ¡  tdt|ƒ ƒ‚W 5 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… }zt|ƒ}W n  tk
�r   d}Y �q Y nX |dd	… dkr�q qd |¡}| j	dk�rH|  
d||f ¡ ||fS )NÚrbrP   z Connection unexpectedly closed: zConnection unexpectedly closedr   zreply:iô  zLine too long.é   s    	
é   éÿÿÿÿó   -ó   
zreply: retcode (%s); Msg: %a)rQ   re   ZmakefileÚreadlineÚ_MAXLINErb   rC   r   rk   rN   rX   rg   Úlenr   Úappendr*   r`   ra   Újoin)r   ÚrespÚlineÚer   ZerrcodeÚerrmsgr   r   r   rf   z  s>    
ÿ


zSMTP.getreplyc                 C   s   |   ||¡ |  ¡ S r   ©rt   rf   )r   rs   r   r   r   r   rK   «  s    z
SMTP.docmdc                 C   s,   |   d|p| j¡ |  ¡ \}}|| _||fS )NÚhelo)rt   rD   rf   Ú	helo_resp)r   Únamer   r   r   r   r   r…   ±  s    z	SMTP.heloc           
      C   s.  i | _ |  | j|p| j¡ |  ¡ \}}|dkrJt|ƒdkrJ|  ¡  tdƒ‚|| _|dkr`||fS d| _	| j 
d¡ d¡}|d= |D ]¢}t |¡}|r¼| j  dd	¡d
 | d¡d  | j d< q‚t d|¡}|r‚| d¡ ¡ }|j| d¡d …  ¡ }	|dk�r| j  |d	¡d
 |	 | j |< q‚|	| j |< q‚||fS )Nrx   r   ri   éú   rP   zlatin-1rq   Úauthr%   ro   z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?Úfeature)r>   rt   Úehlo_msgrD   rf   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Š   Zparamsr   r   r   r8   »  sB    
ÿÿ

ÿÿz	SMTP.ehloc                 C   s   |  ¡ | jkS r   )r•   r>   )r   Úoptr   r   r   Úhas_extnî  s    zSMTP.has_extnc                 C   s   |   d|¡ |  ¡ d S )NÚhelprP   r„   rW   r   r   r   rœ   ò  s    z	SMTP.helpc                 C   s   d| _ |  d¡S )Nr9   Úrset)r?   rK   rH   r   r   r   r�   ø  s    z	SMTP.rsetc                 C   s&   z|   ¡  W n tk
r    Y nX d S r   )r�   r   rH   r   r   r   Ú_rsetý  s    z
SMTP._rsetc                 C   s
   |   d¡S )NÚnoop)rK   rH   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 serverro   Úmailz	FROM:%s%s)	r�   Úanyr›   r?   r   r   rt   r   rf   )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%   ro   ÚrcptzTO:%s%s)r�   r   rt   r   rf   )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 )Nr5   r   zdata:ib  r9   éþÿÿÿó   .)rt   rf   rN   rX   r	   rj   rk   r7   rl   r6   ÚbCRLFrn   )r   r   r   ÚreplÚqr   r   r   r5   *  s"    





z	SMTP.datac                 C   s   |   dt|ƒ¡ |  ¡ S )NÚvrfy©rt   r.   rf   ©r   Zaddressr   r   r   ÚverifyG  s    zSMTP.verifyc                 C   s   |   dt|ƒ¡ |  ¡ S )NÚexpnr¯   r°   r   r   r   r²   N  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+  )r†   rŒ   r8   r…   r   )r   r   r€   r   r   r   Úehlo_or_helo_if_neededU  s
    zSMTP.ehlo_or_helo_if_neededT©Úinitial_response_okc          	      C   sè   |  ¡ }|r|ƒ nd }|d k	rPt| d¡dd�}|  d|d | ¡\}}d| _n|  d|¡\}}d| _|dkrÊ|  jd7  _t |¡}t||ƒ d¡dd�}|  |¡\}}| jtkrftd	t	||fƒ ƒ‚qf|d
krÚ||fS t
||ƒ‚d S )Nr9   r%   )ZeolZAUTHro   rP   r   iN  z4Server AUTH mechanism infinite loop. Last response: ©éë   i÷  )ÚupperÚencode_base64rl   rK   rA   Úbase64ZdecodebytesÚ_MAXCHALLENGEr   rg   r   )	r   Z	mechanismZ
authobjectr¶   Zinitial_responseZresponser   r€   Ú	challenger   r   r   r‰   f  s2    
 ÿ

ÿÿz	SMTP.authc                 C   s0   |d krd S | j d t | j d¡|d¡ ¡  S )Nro   r9   Zmd5)ÚuserÚhmacZHMACÚpasswordrl   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   Ú
auth_plainŸ  s    zSMTP.auth_plainc                 C   s"   |d ks| j dk r| jS | jS d S )Né   )rA   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ƒ‚|| | _| _|D ]t}d	| ¡  	d
d¡ }z4| j
|t| |ƒ|d�\}}	|dkr¬||	fW   S W qb tk
rÔ }
 z|
}W 5 d }
~
X Y qbX qb|‚d S )Nr‰   z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINc                    s   g | ]}|ˆ kr|‘qS r   r   )r¡   r‰   ©Z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�   r   r¾   rÀ   r•   rr   r‰   Úgetattrr   )r   r¾   rÀ   r¶   Zpreferred_authsZauthlistZ
authmethodZmethod_namer   r€   r‚   Zlast_exceptionr   rÆ   r   Úlogin¬  s0    
ÿ
 þ
z
SMTP.loginc                 C   sî   |   ¡  |  d¡stdƒ‚|  d¡\}}|dkrÜts<tdƒ‚|d k	rT|d k	rTtdƒ‚|d k	rl|d k	rltdƒ‚|d k	s||d k	r’dd l}| d	t	d
¡ |d kr¨t
j||d�}|j| j| jd�| _d | _d | _d | _i | _d| _n
t||ƒ‚||fS )NÚstarttlsz+STARTTLS extension not supported by server.ZSTARTTLSr:   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©Zserver_hostname)r´   r›   r   rK   Ú	_have_sslÚRuntimeErrorra   ÚwarningsÚwarnÚDeprecationWarningÚsslÚ_create_stdlib_contextÚwrap_socketre   r<   rQ   r†   rŒ   r>   r�   r   )r   rÒ   rÑ   Úcontextr€   ZreplyrÖ   r   r   r   rÌ   î  sB    
ÿ ÿÿÿ
zSMTP.starttlsc                 C   s^  |   ¡  g }t|tƒr$t|ƒ d¡}| jrZ|  d¡rF| dt|ƒ ¡ |D ]}| |¡ qJ|  	||¡\}}	|dkr˜|dkr„|  
¡  n|  ¡  t||	|ƒ‚i }
t|tƒr¬|g}|D ]H}|  ||¡\}}	|dkrà|dkrà||	f|
|< |dkr°|  
¡  t|
ƒ‚q°t|
ƒt|ƒk�r|  ¡  t|
ƒ‚|  |¡\}}	|dk�rZ|dk�rH|  
¡  n|  ¡  t||	ƒ‚|
S )Nr9   Úsizezsize=%drˆ   i¥  éû   )r´   rj   rk   r7   rl   r�   r›   r~   r}   r¤   rC   rž   r   r¨   r   r5   r	   )r   Ú	from_addrÚto_addrsr   Úmail_optionsÚrcpt_optionsZ
esmtp_optsZoptionr   r€   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rÆd	d
„ ||d  ||d  ||d  fD ƒ}dd
„ tj |¡D ƒ}t |¡}	|	d= |	d= d}
z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 5 Q R X |  |||||¡S )NzResent-Dater%   rP   zResent-z0message has more than one 'Resent-' header blockZSenderÚFromr   c                 S   s   g | ]}|d k	r|‘qS r   r   )r¡   Úfr   r   r   rÇ   ¼  s    ýz%SMTP.send_message.<locals>.<listcomp>ÚToZBccZCcc                 S   s   g | ]}|d  ‘qS )rP   r   )r¡   Úar   r   r   rÇ   À  s     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)ÚpolicyÚSMTPUTF8úBODY=8BITMIMEr   )Úlinesep)rê   rë   )r´   Zget_allr}   ra   r'   r(   ZgetaddressesÚcopyr   rl   ÚUnicodeEncodeErrorr›   r   ÚioÚBytesIOÚ	generatorZBytesGeneratorré   ZcloneZflattenÚgetvaluerã   )r   r   rß   rà   rá   râ   ZresentZheader_prefixZaddr_fieldsZmsg_copyZinternationalZbytesmsgÚgZflatmsgr   r   r   Úsend_messageŽ  sX    

ÿ
þ

þ
ÿ

 ÿ
ÿzSMTP.send_messagec                 C   s<   z| j}d | _|r| ¡  W 5 | j }d | _ |r6| ¡  X d S r   )re   rC   rQ   )r   re   rQ   r   r   r   rC   Û  s    z
SMTP.closec                 C   s.   |   d¡}d  | _| _i | _d| _|  ¡  |S )NÚquitF)rK   rŒ   r†   r>   r�   rC   )r   Úresr   r   r   rõ   è  s    
z	SMTP.quit)r[   r   N)r%   )r%   )r%   )r%   )r%   )r   )r   )N)N)N)NNN)r   r   )NNr   r   )1r   r   r   rN   re   rQ   r†   r‹   rŒ   r�   Ú	SMTP_PORTrc   rE   Ú_GLOBAL_DEFAULT_TIMEOUTr    rI   rM   rO   rX   rZ   rB   rn   rt   rf   rK   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   ¾   sf   þ
0
	
!
1



3


0
	

B
8  ÿ
h    ÿ
M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 )NrÍ   rÎ   r   rÏ   rÄ   rÐ   )ra   rÖ   r×   rØ   rÒ   rÑ   rÙ   rÚ   rÜ   r   r    )
r   rF   rG   rD   rÒ   rÑ   r=   r@   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   r]   rÓ   )rN   rX   rE   rY   r@   rÜ   rÛ   r<   )r   rF   rG   r=   Z
new_socketr   r   r   rZ     s    
ÿÿzSMTP_SSL._get_socket)	r   r   r   ÚSMTP_SSL_PORTrc   rE   rø   r    rZ   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)rD   r@   )r   r    )r   rF   rG   rD   r@   r   r   r   r    ;  s    ÿzLMTP.__init__r[   r   c                 C   s´   |d dkrt j| |||d�S z(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   ú/)r@   zconnect fail:r]   )r   rB   rE   ZAF_UNIXZSOCK_STREAMre   rQ   rb   rN   rX   rC   rf   )r   rF   rG   r@   r   r   r   r   r   rB   A  s"    


zLMTP.connect)r[   r   N)r   r   r   r‹   Ú	LMTP_PORTr    rB   r   r   r   r   rû   +  s
   ÿ
rû   Ú__main__c                 C   s(   t j | d ¡ t j ¡  t j ¡  ¡ S )Nz: )rU   ÚstdoutÚwriteÚflushÚstdinr{   r*   )Úpromptr   r   r   r  [  s    
r  rä   ræ   ú,zEnter message, end with ^D:r%   zMessage length is %dr[   rP   )@rE   rï   r1   Zemail.utilsr'   Zemail.messageZemail.generatorr»   r¿   rí   rS   rU   Zemail.base64mimer   rº   Ú__all__r÷   rú   r3   r«   r|   r¼   ÚcompileÚIr�   rb   r   r   r   r   r   r   r	   r
   r   r   r   r.   r   r6   r7   rÙ   ÚImportErrorrÔ   r   rù   r~   rý   rû   r   r  Zfromaddrr�   ZtoaddrsrR   r   r  r{   r�   r}   ZserverrO   rã   rõ   r   r   r   r   Ú<module>,   s˜         ý	
      :0
/


