ó
‚•oTc           @   se  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Td  d l	 Z	 d  d l
 m Z m Z m Z d  d l m Z m Z d  d l j Z d „  Z d d „ Z d „  Z d  d	 l m Z d d
 „ Z d d „ Z d „  Z d „  Z d „  Z d „  Z d  d l m  Z  d  d l! m" Z" d  d l# m$ Z$ e j% d ƒ Z& d „  Z' d S(   iÿÿÿÿ(   t   ssmtplibN(   t   *(   t   to_unitst
   split_hostt   time_format(   t   EmailFiltert   latin1c         C   s   t  j t |  ƒ ƒ |  S(   N(   t   loggingt   errorR   (   t   msg(    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   errormsg$   s    c         C   sÉ  | rm | j  d ƒ } | j  d ƒ } | j  d ƒ } | j  d ƒ } | r | j d d ƒ r t j ƒ  } q n0 t j ƒ  } t j ƒ  } t j ƒ  } t j ƒ  } |  j d ƒ s° d S| rÅ| rÅ| rÅt |  ƒ }  t	 | ƒ \ } } | sï d	 } n  t
 j d
 | | ƒ y3 t j | | ƒ }	 |	 j ƒ  t
 j d | | ƒ Wnz t k
 r±}
 |
 d ržt
 j d | | ƒ y  t j | | ƒ }	 |	 j ƒ  Wq®t t d ƒ ƒ SXq²t t d ƒ ƒ Sn X|	 j rt j d |	 j t j ƒ } | rt
 j d ƒ y |	 j ƒ  |	 j ƒ  Wqt t d ƒ ƒ SXqn  | d k rÄ| d k rÄy |	 j | | ƒ WqÄt j k
 rmt t d ƒ ƒ St j k
 rt t d ƒ ƒ St j k
 r­t t d ƒ ƒ St t d ƒ ƒ SXn  y |	 j | | |  ƒ d  } Wn• t j k
 rt d ƒ } nv t j k
 r"t d ƒ } nW t j  k
 rAt d ƒ } n8 t j! k
 r`t d ƒ } n t t d ƒ ƒ } n Xy |	 j" ƒ  Wn t t d ƒ ƒ n X| r«| St
 j# d ƒ t d ƒ Sn  d  S(   Nt   email_servert
   email_fromt   email_accountt	   email_pwdR   t    s   
	 s   Skipped empty messagei   s   Connecting to server %s:%ss   Connected to server %s:%si    s9   Non-SSL mail server detected reconnecting to server %s:%ss    Failed to connect to mail servert   STARTTLSs   TLS mail server detecteds!   Failed to initiate TLS connections5   The server didn't reply properly to the helo greetings%   Failed to authenticate to mail servers+   No suitable authentication method was founds-   Unknown authentication failure in mail servers6   The server didn't reply properly to the helo greeting.s6   The server rejected ALL recipients (no mail was sent).s'   The server didn't accept the from_addr.sW   The server replied with an unexpected error code (other than a refusal of a recipient).s   Failed to send e-mails   Failed to close mail connections$   Notification e-mail succesfully sents   Email succeeded($   t   gett   replacet   cfgR   R   R   R   t   stript   _prepare_messageR   R   t   debugR    t   SMTP_SSLt   ehlot	   Exceptiont   smtplibt   SMTPR
   t   Tt	   ehlo_respt   ret   searcht
   IGNORECASEt   starttlst   logint   SMTPHeloErrort   SMTPAuthenticationErrort   SMTPExceptiont   sendmailt   Nonet   SMTPRecipientsRefusedt   SMTPSenderRefusedt   SMTPDataErrort   closet   info(   t   messaget   email_tot   testR   R   R   R   t   servert   portt   mailconnt	   errorcodet   mR	   (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   send/   s”    	

	
	

c          C   sA   t  j t  j ƒ  ƒ j ƒ  \ }  } } } } d |  | | | | f S(   Ns   %s, %s %s %s %s +0000(   t   timet   asctimet   gmtimet   split(   t   dayt   montht   daynot   hmst   year(    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   get_email_dateš   s    *(   t   Templatec         C   s;  t  j ƒ  | d <t ƒ  | d <g  } t  j j ƒ  } | r“ t j j | ƒ r“ y& t j t j j	 | d |  ƒ ƒ } Wq
t
 j t d ƒ | ƒ q
Xnw t j j	 t j t ƒ } t j j	 | d |  t  j ƒ  f ƒ } t j j | ƒ rî | g } n t j j	 | d |  ƒ g } t } x| D]ý } t j | t j ƒ rt | ƒ } | r÷t } | re| j d ƒ g }	 n t  j ƒ  }	 t |	 ƒ rèxt |	 D]] }
 |
 | d <t d	 | d
 | g d t d i d d 6d d 6ƒ } t | j ƒ  |
 | ƒ } ~ q„Wqt d ƒ } qt d ƒ | } t | ƒ qqW| s7t d ƒ } t | ƒ n  | S(   Nt   fromt   dates	   %s-*.tmpls!   Cannot find email templates in %ss
   %s-%s.tmpls
   %s-en.tmplR.   t   tot   sourcet
   searchListt   filtert   compilerSettingss   <!--#t   directiveStartTokens   #-->t   directiveEndTokens"   No recipients given, no email sents%   Invalid encoding of email template %ss   No email templates found(   R   R   R?   t	   email_dirt   get_patht   ost   patht   existst   globt   joinR   R   t   Tat   sabnzbdt   DIR_PROGt   DEF_EMAIL_TMPLt   languaget   Falset   accesst   R_OKt   _decode_filet   TrueR   R.   t   lenR@   R   R5   t   respondR   R
   (   t   prefixt   parmR/   t   lstRM   t   tpatht   sentt   tempRD   t
   recipientst	   recipientR-   t   ret(    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   send_with_template©   sP    &%
	

c         C   s}  t  j j } | r2 | r2 i | f | d ƒ 6} n i  } x | D]… } g  } x\ | | D]P } d | k st d | k r™ | j | j d d ƒ j d ƒ ƒ qV | j | ƒ qV W| | | d | j ƒ  ƒ <q? Wi  } | | d <|  | d <| | d <t | ƒ | d <| | d	 <| | d
 <|	 | d <|
 | d <| | d <d t	 | ƒ | d <t
 j t d ƒ t
 j t
 j
 ƒ  ƒ ƒ | d <t d | | ƒ S(   Ns
   stage-fails   
s   <br/>s   stage-t   statust   nameRM   t   msgidt   stagest   scriptt   script_outputt
   script_rett   cats   %sBt   sizes   %Y-%m-%d %H:%M:%St   end_timet   email(   RR   t   apit	   Ttemplatet   extendR   R9   t   appendt   lowert   strR   R6   t   strftimeR   t	   localtimeRf   (   t   filenameRi   Rn   Rg   RM   t   bytest   fail_msgRj   Rk   Rl   Rm   R/   t   trt   xstagest   staget   linest   lineR^   (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   endjobÞ   s0    %







+c         C   s.   i t  | ƒ d 6|  d 6| d 6} t d | ƒ S(   Nt   amountt   feedt   jobst   rss(   R[   Rf   (   R„   R…   R^   (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   rss_mail  s    !c         C   s!   i | d 6|  d 6} t  d | ƒ S(   Nt   urlR	   t   badfetch(   Rf   (   R	   Rˆ   R^   (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   badfetch_mail  s    c           C   sL   t  j ƒ  rD t t d ƒ t  j j ƒ  t  j ƒ  t ƒ  f t  j ƒ  ƒ Sd Sd  S(   Ns³   To: %s
From: %s
Date: %s
Subject: SABnzbd reports Disk Full

Hi,

SABnzbd has stopped downloading, because the disk is almost full.
Please make room and resume SABnzbd manually.

R   (   R   t
   email_fullR5   R   R.   t
   get_stringR   R?   (    (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   diskfull  s    
2c         C   s   t  |  d ƒ } | j ƒ  } t j d | ƒ } | rT | j d ƒ rT | j d ƒ } n d } | j ƒ  } | j ƒ  y | j | ƒ SWn d SXd  S(   Nt   rs   #encoding[:\s]+(\S+)i   s   latin-1R   (   t   opent   readlineR   R   t   groupt   readR+   t   decode(   RM   t   fpt   txtR4   t   encodingRD   (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyRY   (  s    
(   t   Message(   t   Header(   t   encode_quopris   ^([^:]+):(.*)c         C   s;  d „  } d } t  ƒ  } g  } t } t } xÏ |  j | d ƒ j d ƒ D]² } | rb | rb t } n  | rx | j | ƒ qF t j | ƒ } | rF t } | j d ƒ j	 ƒ  }	 | j d ƒ j	 ƒ  }
 | |
 ƒ rÜ | j
 |	 |
 ƒ qø t |
 | ƒ } | | |	 <qF qF W| j d j | ƒ | ƒ | j d ƒ s1t | ƒ n  | j ƒ  S(   Nc         S   s$   y |  j  d ƒ t SWn t SXd  S(   Nt   ascii(   R“   RZ   RV   (   t   val(    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   plainH  s
    s
   ISO-8859-1R   s   
i   i   s   Content-Transfer-Encoding(   R—   RV   t   encodeR9   RZ   Ru   t	   RE_HEADERR   R‘   R   t
   add_headerR˜   t   set_payloadRP   t   has_keyR™   t	   as_string(   R•   Rœ   t   codeR	   t   payloadt   bodyt   headerR   R4   t   keywordt   value(    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyR   D  s0    			"	((   t   sabnzbd.utilsR    R   RL   R   R   R6   RO   t   sabnzbd.constantsRR   t   sabnzbd.miscR   R   R   t   sabnzbd.encodingR   R   t   sabnzbd.cfgR   R
   R'   R5   R?   t   Cheetah.TemplateR@   Rf   R‚   R‡   RŠ   R   RY   t   email.messageR—   t   email.headerR˜   t   email.encodersR™   t   compileRž   R   (    (    (    s#   /var/www/SABnzbd/sabnzbd/emailer.pyt   <module>   s4   
	k	5#				