
    h                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d dlmZmZ d	d
lmZmZ e j,                  d    dk(  Z G d d      Zy)    N)encode_base64)EmailMessageMessage)MIMEBase)MIMEMultipart)MIMEText)
formatdate
make_msgid)AnyUnion   )MessageTypeMultipartSubtypeEnum   c                   f    e Zd ZdZddZdededefdZded	e	fd
Z
dedefdZdedeeef   fdZy)MailMsga1  
    Mail message parameters

    :param: subject: Email subject header
    :param: recipients: List of email addresses
    :param: body: Plain text message or HTML message
    :param: alternative_body: Plain text message or HTML message
    :param: template_body: Data to pass into chosen Jinja2 template
    :param: subtype: MessageType class. Type of body parameter, either "plain" or "html"
    :param: sender: Email sender address
    :param: cc: CC list
    :param: bcc: BCC list
    :param: reply_to: Reply-To list
    :param: attachments: List of attachment instances
    :param: multipart_subtype: MultipartSubtypeEnum instance. Determines the
    nature of the parts of the message and their relationship to each other
    according to the MIME standard
    :param: headers: Dict of custom SMTP headers
    returnNc                    |j                   | _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _
        |j                  | _        |j                  | _        t               | _        y )N)
recipientsattachmentssubjectbodyalternative_bodytemplate_bodyccbccreply_tocharsetsubtypemultipart_subtypeheadersr
   msgId)selfentriess     [/var/www/html/retail-simulation-api/retail/lib/python3.12/site-packages/fastapi_mail/msg.py__init__zMailMsg.__init__%   s    !,,"..LL	 ' 8 8$22**;;((!(!:!:\
    textr   c                 2    t        ||| j                        S )z+
        Creates a MIMEText object
        )_subtype_charset)r   r   )r#   r(   r   s      r%   	_mimetextzMailMsg._mimetext5   s     wFFr'   message
attachmentc                   K   |D ]  \  }}|rd|v rd|v rt        |d   |d         }nt        dd      }|j                  |j                          d{          t        |       |j	                          d{    |r4d|v r0|d   j                         D ]  }|j                  ||d   |           |j                  d      s;|j                  }	 |xr |j                  d	       dd|f}|j                  dd|       | j                  j                  |        y7 7 # t        $ r t        s|j                  d
      }Y ^w xY ww)z+
        Creates a MIMEBase object
        	mime_typemime_subtype)	_maintyper*   applicationzoctet-streamNr!   zContent-Dispositionasciiutf8UTF8 r.   )filename)r   set_payloadreadr   closekeys
add_headergetr8   encodeUnicodeEncodeErrorPY3r-   attach)r#   r-   r.   file	file_metapartheaderr8   s           r%   attach_filezMailMsg.attach_file;   sC      *OD)[I5.I:U'4y?X  -.Q499;./$**,Y)3'	2779FOOFIi,@,HI : 8812==;9!9
 #B1 5|hWLL%=  * / * ;#+??6#:;sI   AED"
&E<D$=AED&*9E$E& E	EE		Ec                 B   |}| j                   t        j                  k(  rd}nd}|j                  | j	                  | j
                  |             t        t        j                  j                        }|j                  | j                         |j                  |       |S )zA
        Attaches an alternative body to a given message
        htmlplain)r   r   rJ   rB   r,   r   r   r   relatedvalueset_charsetr   )r#   r-   tmpmsgflipped_subtypes       r%   attach_alternativezMailMsg.attach_alternative_   s|     <<;,,,$O%OdnnT%:%:OLM 4 < < B BCDLL)vr'   senderc                 "  K   t        | j                  j                        | _        | j                  j	                  | j
                         | j                  rJ| j                  j                  | j                  | j                  | j                  j                               nU| j                  rI| j                  j                  | j                  | j                  | j                  j                               | j                  =| j                  t        j                  k(  r | j                  | j                        | _        t        t!        j                          d      | j                  d<   | j"                  | j                  d<   dj%                  | j&                        | j                  d<   || j                  d<   | j(                  r| j(                  | j                  d	<   | j*                  r(dj%                  | j*                        | j                  d
<   | j,                  r(dj%                  | j,                        | j                  d<   | j.                  r(dj%                  | j.                        | j                  d<   | j0                  r.| j3                  | j                  | j0                         d{    | j4                  r>| j4                  j7                         D ]!  \  }}| j                  j9                  ||       # | j                  S 7 Zw)z+
        Creates the email message
        NT)	localtimeDatez
Message-IDz, ToFromSubjectCcBcczReply-To)r   r    rL   r-   rM   r   r   rB   r,   r   r   r   r   alternativerP   r	   timer"   joinr   r   r   r   r   r   rG   r!   itemsr=   )r#   rQ   header_nameheader_contents       r%   _messagezMailMsg._messagen   s    
 %T%;%;%A%AB  .LLt/A/A4<<CUCU VWYYLLtyy$,,:L:L MN !!-&&*>*J*JJ224<<@DL)$))+FV%)ZZ\"!YYt7T%V<<&*llDLL#77!%477!3DLL88"&))DHH"5DLL=='+yy'?DLL$""4<<1A1ABBB<</3||/A/A/C+^''^D 0D || Cs   J0L2L3AL)r   N)__name__
__module____qualname____doc__r&   strr   r,   r   r   rG   rP   r   r   r   r`    r'   r%   r   r      sn    (" Gc GC GH G"& "&C "&H- M +S +U<3H-I +r'   r   )sysr[   email.encodersr   email.messager   r   email.mime.baser   email.mime.multipartr   email.mime.textr   email.utilsr	   r
   typingr   r   schemasr   r   version_inforA   r   rf   r'   r%   <module>rq      sD    
  ( / $ . $ .  6	qQI Ir'   