B
    fT                 @   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 )NTz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_fields)r   )	__class__r   r   r       s    z$CmfPluginMailBox.save_preload_fieldsr   )depthc               s   |    t j|d|i|S )Nr   )r   r   save)r   r   argskwargs)r   r   r   r   #   s    zCmfPluginMailBox.savec          	   C   s(  t   d }y| 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s|| 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 d Q R X |S )Nr   :iK     )timeoutlocal_hostname)context)r"   r    r!   )socketZgetfqdnsplitr   Zext_smtpvalueZext_portZ
verify_sslintZuse_tls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   sf  t d| d|  tjs:ttdd dkr:t d d S | dddd	d
ddg d}|r^|}| jjjrr| jjj}| jj	jr| jj	j}t
 }||d< ||d< ||d< |t|d y.|  }	|	|d |d |  |	  W n~ tk
r& }
 z$td| d td|
  W d d }
~
X Y n< tk
r` }
 ztdt  d|
  W d 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.passwordzplugin.ext_smtpzplugin.ext_portzplugin.verify_sslzplugin.use_tlsz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   r   H   sB    




zCmfPluginMailBox.send_message)Nr+   )__name__
__module____qualname__r	   r
   Zapi_methodsclassmethodr   r   r   r   r*   r   __classcell__r   r   )r   r   r
      s    r
   )r   ZasanaZcmf.includeZcmfr   r3   r'   r#   Zsmtplibr   r   Zemail.mime.multipartr   Zemail.mime.textr   Zcommon.fieldsr	   r
   r   r   r   r   <module>   s   