
    Zj              	       6   d 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Zddl	Zddl
Z
ddlZddlmZ ddlmZ dZ ej        d          Z ej        d          Zej                            d          Zd	ed
efdZd	ed
efdZddddej        j        ej        j        z  deded
efdZdeej         j!        z  ej"        j#        z  d
e$e         fdZ%dej        j        ej        j        z  d
edz  fdZ&dej        j        ej        j        z  d
e$e         fdZ'dS )z9
Email message and address formatting/parsing functions.
    N)Iterable)cast)extract_recipientsextract_senderflatten_messageparse_addressquote_addressz[][\\()<>@,:;".]z[\\"]zutf-8addressreturnc                 r    t           j                            |           \  }}|p|                                 S )zG
    Parse an email address, falling back to the raw string given.
    )emailutils	parseaddrstrip)r
   _parsed_addresss      T/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/aiosmtplib/email.pyr   r   !   s1     --g66A~,W]]__,    c                 ,    t          |           }d| dS )zC
    Quote a subset of the email addresses defined by RFC 821.
    <>)r   )r
   r   s     r   r	   r	   *   s"     #7++N ~    r   F8bit)utf8cte_typemessager   r   c                  t          j         |           }|d= |d= t          j                    5 }t          |t          j        j                  rw|rt          j        j        nt          j        j	        }|dk    r|
                    |          }t          j                            ||          }|                    |           nct          j        j        }|dk    r|
                    |          }t          j                            ||          }|                    |           |                                }	d d d            n# 1 swxY w Y   |	S )NBcc
Resent-Bccr   )r   )policy)copyioBytesIO
isinstancer   r   EmailMessager   SMTPUTF8SMTPclone	generatorBytesGeneratorflattencompat32getvalue)
r   r   r   message_copy	messageior   r(   compat_policycompat_generatorflat_messages
             r   r   r   2   s~    9W%%LU\"	 ,lEM$>?? 	3.2IU\**8IF6!!x8866y6PPIl++++ "L1M6!! - 3 3X 3 F F$==-  >     $$\222 ))+++, , , , , , , , , , , , , , ,. s   DEEEheaderc                   g }t          | t          j        j                  rt	          t
          t          t          j        j        z           | j                  }|D ]^}t          |t          j        j                  r|	                    |j
                   <|	                    t          |                     _nt          | t          j        j                  r[t          j                            |           D ]:\  }}t          ||pd          }|	                    t          |                     ;n=|                    d t          j                            | g          D                        |S )zl
    Convert address headers into raw email addresses, suitable for use in
    low level SMTP commands.
    ascii)encodingc              3       K   | ]	\  }}|V  
d S )N ).0r   addrs      r   	<genexpr>z$extract_addresses.<locals>.<genexpr>p   s&      PP'!TPPPPPPr   )r#   r   headerregistryAddressHeaderr   r   strAddress	addressesappend	addr_specr   r2   Headerdecode_headerextendr   getaddresses)r2   r?   header_addressesr
   address_bytescharsetaddress_strs          r   extract_addressesrJ   X   sg    I&%.<== QS5/778&:J
 
 ( 	9 	9G'5#7#?@@ 9  !23333  w!7!78888		9
 
FEL/	0	0 Q&+l&@&@&H&H 	9 	9"M7mg6HIIIK];778888	9 	PPU[-E-Evh-O-OPPPPPPr   c                    |                      d          }|"t          |          dk    rt          d          |rd}d}nd}d}|| v r	| |         }n| |         }|dS t          |          }|sdS |d	         S )
z;
    Extract the sender from the message object given.
    Resent-DateN   0Message has more than one 'Resent-' header blockzResent-SenderzResent-FromSenderFromr   )get_alllen
ValueErrorrJ   )r   resent_datessender_header_namefrom_header_namesender_headerr?   s         r   r   r   u   s     ??=11LC$5$5$9$9KLLL	 ",(%! W$$ 23 01t!-00I tQ<r   c                   g }|                      d          }|"t          |          dk    rt          d          |rd}nd}|D ]>}|                      |g           D ]$}|                    t	          |                     %?|S )z?
    Extract the recipients from the message object given.
    rL   NrM   rN   )z	Resent-Toz	Resent-Ccr   )ToCcr   )failobj)rQ   rR   rS   rD   rJ   )r   
recipientsrT   recipient_headersr2   	recipients         r   r   r      s     J??=11LC$5$5$9$9KLLL	 0D/# < < << 	< 	<I/	::;;;;	< r   )(__doc__r    email.charsetr   email.generatoremail.headeremail.headerregistryemail.messageemail.policyemail.utilsr!   recollections.abcr   typingr   __all__compileSPECIALS_REGEXESCAPES_REGEXrH   CharsetUTF8_CHARSETr=   r   r	   r   r$   Messageboolbytesr   r;   r<   r2   rB   listrJ   r   r   r7   r   r   <module>rt      sA                                 				 				 $ $ $ $ $ $       /00
8$$}$$W---3 -3 - - - -!3 !3 ! ! ! ! # # #]'%-*??# 	#
 # # # # #L%&44u|7JJ 
#Y   :]'%-*?? 	4Z   D]'%-*?? 
#Y     r   