U
    gl                     @   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                       sj   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g f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_smtpNu   Уведомление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 |D ]}|
| qz.|  }||
d |
d |
  |  W n~ tk
rl } 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.utilsr5   gdebugr(   Z
PRODUCTIONgetattrr   loadr*   endswithZload_fieldsr0   r+   Zsend_email_fromr   attachr	   r4   ZsendmailZ	as_stringquitOSErrorZlogging	exceptionZ	cmf_alert	Exception	traceback
format_exc)r   Zto_loginmessageZ
from_loginZsubjectZemail_attachmentsr    r!   r5   Z_frommsgr=   r3   er   r   r   r   H   sP    




zCmfPluginMailBox.send_message)__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   