U
    j*g                     @   s   d dl m Z  d dlZd dlT d dlmZ d dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ G d	d
 d
ejZdS )    )copyN)*fields)SMTPSMTP_SSL)MIMEMultipart)MIMEText)cmf_plugin_mailboxc                       sd   e Zd Zejjddg Zedd Zdd Z fddZ	d	d
 fdd
Z
dd ZdddZ  ZS )CmfPluginMailBoxget_local_mailboxsend_messagec                 C   s   | j ddgdS )NTplugin.ext_smtp)systemr   )get)cls r   %./common/models/cmf_plugin_mailbox.pyr      s    z"CmfPluginMailBox.get_local_mailboxc                 C   s    | j r
d S tj| jdd| _ d S )NZmail)nametype)pluginZmodelsZ	CmfPluginr   selfr   r   r   _process_plugin   s    z CmfPluginMailBox._process_pluginc                    s   t   dg S )Nr   )supersave_preload_fieldsr   	__class__r   r   r       s    z$CmfPluginMailBox.save_preload_fieldsr   )depthc                   s   |    t j|d|i|S )Nr   )r   r   save)r   r   argskwargsr   r   r   r   #   s    zCmfPluginMailBox.savec              	   C   s  t j}z| jjjd\}}W n    | jjj}| jjj}Y nX | jjrR| jjj}| jjjrt|dksr| jj	jrt
t
j}t||d|d}|j|d qt
 }t|||d|d}n"t||d|d}| jj	jr|  |  | jjrt   || jjj| jj  W 5 Q R X |S )N:iK     )timeoutlocal_hostname)context)r&   r$   r%   
   )configAPP_FQDNr   ext_smtpvaluesplitZext_portZ
verify_sslintZuse_tlssslZ
SSLContextZPROTOCOL_TLSr   ZstarttlsZcreate_default_contextr   ZehlopasswordZcmfutilZdisable_aclloginZdecrypt)r   hostnameZserverportr&   smtpr   r   r   
_make_smtp(   s.    





$zCmfPluginMailBox._make_smtpN   Уведомлениеc              
   O   s  ddl m} td| d|  tjs^ttdd dkr^| jjdgdj	
d	s^td
 d S | dddddddg d}|r|}| jjjr| jjj}| jjjr| jjj}t }	||	d< ||	d< ||	d< |dd|	d< |	t|d z.|  }
|
|	d |	d |	  |
  W n~ tk
rX } z$td| d td|  W 5 d }~X Y n< tk
r } ztdt  d|  W 5 d }~X Y nX d S )Nr   )
formatdateu!   Отправка email: to_login=z
, subject=r)   zbcrm.carbonsoft.rur*   r   z	.local:25u\   Отправка email отменена, т.к. сервер не в production-режимеzplugin.loginzplugin.passwordr   zplugin.ext_portzplugin.verify_sslzplugin.use_tlszplugin.send_email_fromzEvaTeam <noreply@evateam.ru>ZFromZToZSubjectT)	localtimeZDateZhtmlz'CmfPluginMailBox.send_message(to_login=z) erroru  Не удалось отправить сообщение. Убедитесь, что указаны корректные параметры SMTP-сервера и попробуйте снова или свяжитесь с администратором сети. 
Ошибка: u<   Ошибка подключения к SMTP-серверу.

)Zemail.utilsr6   gdebugr(   Z
PRODUCTIONgetattrr   loadr*   endswithZload_fieldsr0   r+   Zsend_email_fromr   Zattachr	   r4   ZsendmailZ	as_stringquitOSErrorZlogging	exceptionZ	cmf_alert	Exception	traceback
format_exc)r   Zto_loginmessageZ
from_loginZsubjectr    r!   r6   Z_frommsgr3   er   r   r   r   H   sL    




zCmfPluginMailBox.send_message)Nr5   )__name__
__module____qualname__r
   r   Zapi_methodsclassmethodr   r   r   r   r4   r   __classcell__r   r   r   r   r      s   
 r   )r   ZasanaZcmf.includeZcmfr   rB   r.   ZsocketZsmtplibr   r   Zemail.mime.multipartr   Zemail.mime.textr	   Zcommon.fieldsr
   r   r   r   r   r   <module>   s   