
    ghS                         d dl m Z  d dlZd dl 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
ej"                        Zy)    )copyN)*fields)SMTPSMTP_SSL)MIMEMultipart)MIMEText)cmf_plugin_mailboxc            
            e Zd Zej                  j
                  ddgz   Zed        Zd Z fdZ	dd fd
Z
d	 Z	 	 dd
Ze edd      dedededefd              Z xZS )CmfPluginMailBoxget_local_mailboxsend_messagec                 *    | j                  ddg      S )NTplugin.ext_smtp)systemr   )get)clss    %./common/models/cmf_plugin_mailbox.pyr   z"CmfPluginMailBox.get_local_mailbox   s    wwd,=+>w??    c                 j    | j                   ry t        j                  | j                  d      | _         y )Nmail)nametype)pluginmodels	CmfPluginr   )selfs    r   _process_pluginz CmfPluginMailBox._process_plugin   s'    ;;&&DIIF&Cr   c                 (    t         |          dgz   S )Nr   )supersave_preload_fields)r   	__class__s    r   r"   z$CmfPluginMailBox.save_preload_fields    s    w*,z99r   r   )depthc                F    | j                          t        |   |d|i|S )Nr$   )r   r!   save)r   r$   argskwargsr#   s       r   r&   zCmfPluginMailBox.save#   s(    w|T99&99r   c                    t         j                  }	 | j                  j                  j                  j                  d      \  }}| j                  j                  r | j                  j                  j                  }| j                  j                  j                  rt        |      dk(  s | j                  j                  j                  rEt        j                  t        j                        }t        ||d|      }|j                  |       ndt        j                         }t!        |||d|      }n?t        ||d|      }| j                  j                  j                  r|j                          |j#                          | j                  j$                  rqt&        j)                         5  |j+                  | j                  j*                  j                  | j                  j$                  j-                                d d d        |S |S #  | j                  j                  j                  }| j                  j                  j                  }Y xY w# 1 sw Y   |S xY w)N:iK  
   )timeoutlocal_hostname)context)r.   r,   r-   )configAPP_FQDNr   ext_smtpvaluesplitext_port
verify_sslintuse_tlsssl
SSLContextPROTOCOL_TLSr   starttlscreate_default_contextr   ehlopasswordcmfutildisable_acllogindecrypt)r   hostnameserverportr.   smtps         r   
_make_smtpzCmfPluginMailBox._make_smtp(   s    ??	.;;//55;;C@LFD ;;;;''--D;;!!''4yC4;;#6#6#<#<..)9)9:FD"XNg.446grZbcbJD{{""((		;;$$& T

4;;,,22DKK4H4H4P4P4RSTt-	.[[))//F;;''--D$Ts   2H
 +AI
AIIc                 @   ddl m}
 t        j                  d| d|        t        j
                  s`t        t        dd       dk7  rL| j                  j                  dg      j                  j                  d	      st        j                  d
       y | j                  g d       d}|r|}| j                  j                  j                  r | j                  j                  j                  }| j                  j                  j                  r | j                  j                  j                  }d } ||      } ||      } ||      }|xs g }t               }||d<   dj!                  |      |d<   ||d<    |
d      |d<   |rdj!                  |      |d<   |j#                  t%        |d             |D ]  }|j#                  |        ||z   |z   }	 | j'                         }|j)                  |d   ||j+                                |j-                          t        j                  d|        y # t.        $ r1}t0        j3                  d| d       t5        d|        Y d }~y d }~wt6        $ r-}t5        dt9        j:                          d|        Y d }~y d }~ww xY w)Nr   )
formatdateu   Отправка email: to=z
, subject=r0   zbcrm.carbonsoft.rur1   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>c                 4    | sg S t        | t              r| S | gS )N)
isinstancelist)r2   s    r   ensure_listz2CmfPluginMailBox.send_message.<locals>.ensure_liste   s     	&ud35@%@r   Fromz, ToSubjectT)	localtimeDateCchtmlu)   Email успешно отправлен: z!CmfPluginMailBox.send_message(to=z) erroru   Не удалось отправить сообщение. Проверьте параметры SMTP и попробуйте снова.
Ошибка: u<   Ошибка подключения к SMTP-серверу.

)email.utilsrI   gdebugr/   
PRODUCTIONgetattrr   loadr1   endswithload_fieldsrA   r2   send_email_fromr	   joinattachr
   rG   sendmail	as_stringquitOSErrorlogging	exception	cmf_alert	Exception	traceback
format_exc)r   tomessage
from_loginsubjectemail_attachmentsccbccr'   r(   rI   _fromrM   to_listmsgr`   
recipientsrF   es                      r   r   zCmfPluginMailBox.send_messageH   sk   *	-bTG9EF  WVZ%FJ^%^(((=FFOOP[\GGrs & 	' /E;;""KK%%++E;;&&,,KK//55E	A
 b/_#-3oFIIg&D	 I 40F		"CI

8GV,-' 	FJJv	 r\C'
		u??$DMM#f+z3==?CIIKGG?
|LM 	w A''RS  r  st  ru  v  w  w 	uUV_VjVjVlUmmopqorstt	us%   AH/ /	J8'I$$J0#JJu)   Отправка почты из bzpythonT)description
system_jobrn   contentrp   rq   c                 l    t         j                  j                         }|j                  | ||||       y )N)rn   rp   rq   )r   r   r   r   )rk   rn   ry   rp   rq   mail_boxs         r   send_email_jobzCmfPluginMailBox.send_email_job   s1     **<<>b'7rsKr   )Nu   УведомлениеNNN)__name__
__module____qualname__r   r   api_methodsclassmethodr   r   r"   r&   rG   r   staticmethodcmf_deferred_jobstrrL   r|   __classcell__)r#   s   @r   r   r      s    $55AAE
 
K
 @ @D
: !" :
@ BZ6:@uD "MZ^_L3 L L L$ L ` Lr   r   )r   asanacmf.includecmfr   ri   r8   socketsmtplibr   r   email.mime.multipartr	   email.mime.textr
   common.fieldsr   r    r   r   <module>r      s=         
  " . $ ,}L):: }Lr   