
    lf                     ~    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 ddZd Zd	 Zd
 Zd Zy)    N)EmailMessage)SMTPSMTP_SSLSMTPServerDisconnected)unquote)sleep)*c                    t        j                         j                         d   }t        j                  r| rt        d       t        t        j                        dk(  st        j                  rat        j                  t        j                        }t        t        j                  t        j                  d|      }|j                  |       nt        j                         }t!        t        j                  t        j                  |d|      }nW| rt        d       t        t        j                  t        j                  d	      }t        j                  r|j                          | r|j#                  d
       t        d       |j%                          t        j&                  r[| rt        d       |j)                  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)      sh    ~~%%'*HUV v  !S(F,@,@nnS%5%56G..0A0A2'/1DMM'M*002GF22F4E4E$+RRD NOF**F,=,=rJMMOA45IIK]^

"("4"4F&:K:K!!	# K    c                     t        | t              r| ndj                  |       dz   }t               }|j	                  |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   sb    %lC8<dii>UX\>\DnGf- GI''GFOGDMNr*   c                    t        | ||      }	 t               }d}t        dd|z         D ]-  }	 |j                  ||d   |d          |j                           y  y # t        $ r(}t        t	        j
                         |       Y d }~y d }~ww xY w# t        $ rn}t        j                  d||       ||k(  rt        j                  d|       |d|z   }	t        j                  d|	       t        |	       t               }Y d }~d }~ww xY w)	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   ;   s   <%8G} LA,- !	!gwvFIIK	!  i""$a( & 	!oqx  {G  H,&kmyz	7{HOOVX`a(O=D	!s/   
A )B	B$BB	DA$DDc                 `    t         j                  ddt        |       d      j                         S )u   
    Удалить +subaddress из почты и раскодировать
    Долг - разбить эти задаче на отдельные функции и использовать отдельно.
    z\+.+@@r   )resubr   lower)r8   s    r(   normalize_email_addressrT   X   s&    
 66(C399;;r*   c                    t        dj                  t        j                  t        j                  t        j
                  t        j                               t        dj                  t        j                               t        j                  rIt        dj                  t        j                  rt        j                  nt        j                               nt        d       t        d       t        dd|       }t        d      }t        d	       |j                  ||d
   |d          t        d       |j                          t        dj                  |              y)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=Q=QSYSgSghj	
-
4
4V5F5F
GHT[["("4"4F&:K:KM 	N 	-.	
01:<[]bcGT"D	
%&gwv>	
EFIIK	  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*   