U
    {fA                     @   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                       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  t   d }z| jjjd\}}W n    | jjj}| jjj}Y nX | jjr\| 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t   || jjj| jj  W 5 Q R X |S )Nr   :iK     )timeoutlocal_hostname)context)r$   r"   r#   )socketZgetfqdnsplitr   Zext_smtpvalueZext_portZ
verify_sslintsslZ
SSLContextZPROTOCOL_TLSr   ZstarttlsZcreate_default_contextr   ZehloZpasswordZcmfutilZdisable_aclloginZdecrypt)r   ZhostnameZ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_messageA   sB    




zCmfPluginMailBox.send_message)Nr-   )__name__
__module____qualname__classmethodr   r   r   r   r,   r:   __classcell__r   r   r   r   r
      s   
r
   )r   ZasanaZcmf.includeZcmfr   r5   r)   r%   Zsmtplibr   r   Zemail.mime.multipartr   Zemail.mime.textr   Zcommon.fieldsr	   r
   r   r   r   r   <module>   s   