U
    {yd{                     @   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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                       sT   e Zd 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 )CmfPluginMailBoxc                 C   s   | j ddgdS )NTplugin.ext_smtp)systemr   )get)cls r   %./common/models/cmf_plugin_mailbox.pyget_local_mailbox   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   z| j jjd\}}W n    | j jj}| j jj}Y nX | j jrL| j jj}| j jjrt|dkrttj	}t
||dd}|j|d qt }t|||dd}nt
||dd}|  | j jr|| j jj| j j  |S )N:iK     )timeout)context)r#   r"   )r   Zext_smtpvaluesplitZext_portZ
verify_sslintsslZ
SSLContextZPROTOCOL_TLSr   ZstarttlsZcreate_default_contextr   ZehloZpasswordloginZdecrypt)r   ZserverZportr#   smtpr   r   r   
_make_smtp"   s&    


zCmfPluginMailBox._make_smtpN   Уведомлениеc              
   O   sd  t d| d|  tjs:ttdd dkr:t d d S | dddd	d
dg d}|r\|}| jjjrp| jjj}| jj	jr| jj	j}t
 }||d< ||d< ||d< |t|d z.|  }	|	|d |d |  |	  W n~ tk
r$ }
 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 )Nu!   Отправка email: to_login=z
, subject=ZAPP_FQDNzbcrm.carbonsoft.ruu\   Отправка email отменена, т.к. сервер не в production-режимеzplugin.loginzplugin.passwordr   zplugin.ext_portzplugin.verify_sslzplugin.send_email_fromzEvaTeam <noreply@evateam.ru>ZFromZToZSubjectZhtmlz'CmfPluginMailBox.send_message(to_login=z) erroru  Не удалось отправить сообщение. Убедитесь, что указаны корректные параметры SMTP-сервера и попробуйте снова или свяжитесь с администратором сети. 
Ошибка: u<   Ошибка подключения к SMTP-серверу.

)gdebugZconfigZ
PRODUCTIONgetattrZload_fieldsr   r(   r$   Zsend_email_fromr   Zattachr   r*   ZsendmailZ	as_stringquitOSErrorZloggingZ	exceptionZ	cmf_alert	Exception	traceback
format_exc)r   Zto_loginmessageZ
from_loginZsubjectr   r   Z_frommsgr)   er   r   r   send_message;   sB    




zCmfPluginMailBox.send_message)Nr+   )__name__
__module____qualname__classmethodr   r   r   r   r*   r8   __classcell__r   r   r   r   r
      s   
r
   )r   ZasanaZcmf.includeZcmfr   r3   r'   Zsmtplibr   r   Zemail.mime.multipartr   Zemail.mime.textr   Zcommon.fieldsr	   r
   r   r   r   r   <module>   s   