
    f6i
                     x    d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
mZ d dlmZ  e       Z G d de
      Zy)	    N)MIMEText)MIMEMultipart)retrystop_after_attemptwait_exponential)NotificationChannelDeliveryResult)get_settingsc                   r    e Zd ZdZedefd       Z e ed       e	ddd      	      d
edede
fd       Zy)EmailAdapterz0SMTP email adapter (Mailgun/SendGrid compatible)returnc                      y)Nemail )selfs    ,/var/www/notifications/app/channels/email.pychannel_namezEmailAdapter.channel_name   s                 
   )
multiplierminmax)stopwaittargetcontentc                 ,  K   t         j                  st        dd      S |j                  dd      }|j                  dd      }|j                  dt         j                        }|j                  dt         j
                        }|rt        d	      nt        |d
d      }|r8|j                  t        |d
d             |j                  t        |dd             ||d<   ||d<   ||d<   |r||d<   	 t        j                  t         j                  t         j                  d      5 }	t         j                  r>t         j                  r.|	j                  t         j                  t         j                         |	j                  |       ddd       t        dd|v r|d   nd||d      S # 1 sw Y   #xY w# t        j                   $ r#}
t        ddt#        |
             cY d}
~
S d}
~
wt$        $ r#}
t        ddt#        |
             cY d}
~
S d}
~
ww xY ww)av  
        Send email via SMTP
        
        Args:
            target: recipient email address
            content: email body (plain text or HTML)
            kwargs: subject (default: "Notification"), html (bool), from_email, reply_to
        
        Requires env vars: SMTP_HOST, SMTP_PORT, EMAIL_FROM
        Optional: SMTP_USER, SMTP_PASSWORD, EMAIL_REPLY_TO
        FzSMTP_HOST not configured)successerrorsubjectNotificationhtml
from_emailreply_toalternativeplainzutf-8SubjectFromTozReply-To   )timeoutNTz
Message-ID)tor#   )r!   
message_idresponse_metazSMTP error: zUnexpected error: )settings	SMTP_HOSTr	   get
EMAIL_FROMEMAIL_REPLY_TOr   r   attachsmtplibSMTP	SMTP_PORT	SMTP_USERSMTP_PASSWORDloginsend_messageSMTPExceptionstr	Exception)r   r   r   kwargsr#   is_htmlr&   r'   msgserveres              r   sendzEmailAdapter.send   s      !!!0 
 **Y7**VU+ZZh.A.AB
::j(*A*AB.5mM*8GWV];^JJx':;JJx9: I FD	&C
O	h00(2D2DbQ )U[%%(*@*@LL!3!3X5K5KL##C(	) "0<0C3|,%+@ ) ) $$ 	!$SVH-   	!*3q6(3 	sg   C,H/4F1 #A F%!F1 $H%F.*F1 1HG"HH"H.HHHHHN)__name__
__module____qualname____doc__propertyr@   r   r   r   r   r	   rG   r   r   r   r   r      s`    :c   "r:9 9s 9 9	9r   r   )r8   email.mime.textr   email.mime.multipartr   tenacityr   r   r   app.channels.baser   r	   app.core.configr
   r2   r   r   r   r   <module>rR      s0     $ . @ @ A (>D& Dr   