Ë
    Íj©
  ã            	       óÒ   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZmZ  e j                  e«      ZdddœZ G d„ d	e«      Zd
„ Zdedededefd„Zd„ Zddedededdfd„Zy)é    N)ÚMIMEMultipart)ÚMIMEText)Ú	SMTP_FROMÚ	SMTP_HOSTÚSMTP_PASSWORDÚ	SMTP_PORTÚSMTP_SSLÚSMTP_TLSÚ	SMTP_USERzVerify your Sergio accountzReset your Sergio password)ÚsignupÚforgot_passwordc                   ó   — e Zd ZdZy)ÚEmailDeliveryErrorz%Raised when OTP email cannot be sent.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úA/var/www/html/sergio/sergio-backend/app/services/email_service.pyr   r      s   „ Ú/r   r   c                  óÊ   — t         t        t        t        t        dœj                  «       D � �cg c]	  \  } }|s| ‘Œ }} }|rt        ddj                  |«      › �«      ‚y c c}} w )N)r   r   r   r   r   z!SMTP is not configured. Missing: z, )r   r   r   r   r   Úitemsr   Újoin)ÚnameÚvalueÚmissings      r   Ú_validate_smtp_configr      s€   € ô #Ü"Ü*Ü"Ü"ñ
÷ ‰%‹'ðô
ñ‰KˆD�%ñ ò 	ðð ñ 
ñ Ü Ø/°·	±	¸'Ó0BÐ/CÐDó
ð 	
ð ùó
s   ®AÚto_emailÚotpÚpurposeÚreturnc                 ó®   — t         j                  |d«      }d|› d�}t        «       }t        |d<   | |d<   ||d<   |j	                  t        |d«      «       |S )NzYour verification codezYour verification code is: zZ

This code expires in 10 minutes.
If you did not request this, you can ignore this email.ÚFromÚToÚSubjectÚplain)ÚPURPOSE_SUBJECTSÚgetr   r   Úattachr   )r   r   r    ÚsubjectÚbodyÚmessages         r   Ú_build_messager-   .   sj   € Ü×"Ñ" 7Ð,DÓE€Gà
% c Uð +Bð 	Bð 	ô ‹o€GÜ€GˆF�OØ€GˆD�MØ €GˆIÑØ‡N�N”8˜D 'Ó*Ô+Ø€Nr   c                  ó"  — t         r2t        j                   t        t        d¬«      } | j	                  «        | S t        j
                  t        t        d¬«      } | j	                  «        t        r | j                  «        | j	                  «        | S )Né   )Útimeout)r	   Úsmtplibr   r   ÚehloÚSMTPr
   Ústarttls)Úservers    r   Ú_smtp_connectionr6   >   s]   € ÝÜ×!Ñ!¤)¬YÀÔCˆØ�‰ŒØˆä�\‰\œ)¤Y¸Ô;€FØ
‡K�K„MÝØ�‰ÔØ�‰ŒØ€Mr   c                 ó  — t        «        t        | ||«      }	 t        «       5 }|j                  t        t
        «       |j                  t        | g|j                  «       «       d d d «       t        j                  d| |«       y # 1 sw Y   Œ!xY w# t        j                  $ r+}t        j                  dt        «       t        d«      |‚d }~wt        j                  $ r*}t        j                  d| «       t        d|› �«      |‚d }~ww xY w)NzOTP email sent to %s for %sz!SMTP authentication failed for %suŽ   SMTP login failed. Check SMTP_HOST matches your email provider (Gmail â†’ smtp.gmail.com, Titan â†’ smtp.titan.email) and use an app password.zFailed to send OTP email to %szFailed to send OTP email: )r   r-   r6   Úloginr   r   Úsendmailr   Ú	as_stringÚloggerÚinfor1   ÚSMTPAuthenticationErrorÚ	exceptionr   ÚSMTPException)r   r   r    r,   r5   Úexcs         r   Ú
send_emailrA   L   sç   € ÜÔä˜X s¨GÓ4€GðNÜÔ 6Ø�L‰Lœ¤MÔ2Ø�O‰OœI¨ z°7×3DÑ3DÓ3FÔG÷  ô 	�‰Ð1°8¸WÕE÷  Ðûô ×*Ñ*ò Ü×ÑÐ<¼iÔHÜ ð^ó
ð ð	ûô × Ñ ò NÜ×ÑÐ9¸8ÔDÜ Ð#=¸c¸UÐ!CÓDÈ#ÐMûðNús;   ™
B £ABÁ$B ÂBÂ	B ÂD	Â#&C	Ã	D	Ã%DÄD	)Úverification)Úloggingr1   Úemail.mime.multipartr   Úemail.mime.textr   Úapp.core.configr   r   r   r   r	   r
   r   Ú	getLoggerr   r;   r'   Ú	Exceptionr   r   Ústrr-   r6   rA   r   r   r   Ú<module>rJ      s¡   ðÛ Û Ý .Ý $÷÷ ñ ð 
ˆ×	Ñ	˜8Ó	$€ð +Ø3ñÐ ô0˜ô 0ò
ð$˜Sð  sð °Sð ¸]ó ò ñN˜ð N 3ð N°ð NÈ$ô Nr   