
    f                     ~    d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
 d dlmZ d dlT ddZd	 Zd
 Zd Zd ZdS )    N)EmailMessage)SMTPSMTP_SSLSMTPServerDisconnected)unquote)sleep)*Fc                    t          j                                                    d         }t          j        r| rt          d           t          t          j                  dk    st          j        r\t          j
        t          j                  }t          t          j        t          j        d|          }|                    |           nt          j                    }t!          t          j        t          j        |d|          }nW| rt          d           t          t          j        t          j        d	          }t          j        r|                                 | r$|                    d
           t          d           |                                 t          j        rS| rt          d           |                    t          j        rt          j        nt          j        t          j                   |S )Nr   uA   Подключаемся к серверу с ssl (timeout=30)...iK     )timeoutlocal_hostname)context)r   r   r   u:   Подключаемся к серверу (timeout=30)...)r      u$   Отсылаем ehlo (smtp.ehlo)...uI   Проходим авторизацию по логину/паролю...)socketgetfqdnsplitconfigEMAIL_USE_SSLprintint
EMAIL_PORTEMAIL_USE_TLSssl
SSLContextPROTOCOL_TLSr   EMAIL_HOST_ADDRstarttlscreate_default_contextr   set_debuglevelehloEMAIL_PASSWORDloginEMAIL_LOGIN
EMAIL_USER)debughostnamer   smtps       ./modules/auth/models/email.pymake_clientr)      s    ~%%''*H  	WUVVV v !!S((F,@(nS%566G.0A2'/1 1 1DMM'M****022GF2F4E$+RR R RDD  	PNOOOF*F,=rJJJ 	MMOOO 6A4555IIKKK # 	_]^^^

"("4KF&:K!	# 	# 	# K    c                     t          | t                    r| nd                    |           dz   }t                      }|                    |d           ||d<   t
          j        |d<   ||d<   |S )N
html)subtypeSubjectFromTo)
isinstancestrjoinr   set_contentr   r$   )msg_contentssubjectemailbodymessages        r(   make_messager;   1   sr    %lC88\<<dii>U>UX\>\DnnGf--- GI'GFOGDMNr*   c                    t          | ||          }	 t                      }n9# t          $ r,}t          t	          j                    |           Y d }~d S d }~ww xY wd}t          dd|z             D ]}	 |                    ||d         |d                    |                                  d S # t          $ r}t                              d||           ||k    rt                              d|           |d|z   }	t                              d|	           t          |	           t                      }Y d }~d }~ww xY wd S )	N   r   r0   r1   uO   Попытка отправки письма #%d из %d провалиласьuK   Не удалось отправить письмо за %d попыток.   u8   Попробуем снова через %d секунд)r;   r)   OSErrorr   	traceback
format_excrangesend_messagequitr   logging	exceptionerrorwarningr   )
r6   r7   r8   r:   r'   emax_attemptsattempterrretry_ins
             r(   
send_emailrN   ;   sz   <%88G}}   i"$$a((( LA,-- ! !	!gwvFFFIIKKKFF% 	! 	! 	!oqx  {G  H  H  H,&&kmyzzz	7{HOOVX`aaa(OOO==DDDDDD	!! !s-   " 
A!AA37B--
D=7A<D88D=c                 z    t                               ddt          |           d                                          S )u   
    Удалить +subaddress из почты и раскодировать
    Долг - разбить эти задаче на отдельные функции и использовать отдельно.
    z\+.+@@r   )resubr   lower)r8   s    r(   normalize_email_addressrT   X   s.    
 66(C3399;;;r*   c                    t          d                    t          j        t          j        t          j        t          j                             t          d                    t          j                             t          j        rEt          d                    t          j	        rt          j	        nt          j                             nt          d           t          d           t          dd|           }t          d          }t          d	           |                    ||d
         |d                    t          d           |                                 t          d                    |                      dS )um   Функция для отладки отправки почты. Вызывается чеерез /opt/bin/ud   Письмо будет отправлено через сервер {}, порт {}, SSL {}, TLS {}u!   Имя отправителя: {}uD   С авторизацией по логину {} и паролю ...u   Без авторизацииu$   Создаем сообщение...u   Тестовое письмоT)r%   u   Отсылаем email...r0   r1   u9   Отключаемся от сервера (smtp.quit)...u   Готово. Ошибок замечено не было. Проверьте, что на почту {} пришло письмоN)r   formatr   r   r   r   r   r$   r!   r#   r;   r)   rC   rD   )r8   r:   r'   s      r(   debug_emailrW   `   s   	
p6&(&*;V=QSYSghhj j j	
-
4
4V5F
G
GHHH /T[["("4KF&:KM M 	N 	N 	N 	N 	-...	
0111:<[]bccGT"""D	
%&&&gwv>>>	
EFFFIIKKK	  O  V  V  W\  ]  ]  ^  ^  ^  ^  ^r*   )F)r   r   r@   email.messager   smtplibr   r   r   urllib.parser   timer   cmf.includer)   r;   rN   rT   rW    r*   r(   <module>r^      s    



      & & & & & & : : : : : : : : : :                      # # # #L  ! ! !:< < <^ ^ ^ ^ ^r*   