Ë
    éëjo  ã            	       óü  — 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mZmZmZ dZdZ ej&                  d«      Z ej&                  d«      Zej,                  j/                  d«      Zd	ed
efd„Zd	ed
efd„Zdeeef   d
efd„Zdddœdeej:                  j<                  ej:                  j>                  f   de ded
e!fd„Z"deeejF                  jH                  ejJ                  jL                  f   d
ee   fd„Z'deej:                  j<                  ej:                  j>                  f   d
ee   fd„Z(deej:                  j<                  ej:                  j>                  f   d
ee   fd„Z)y)z9
Email message and address formatting/parsing functions.
é    N)ÚListÚOptionalÚTupleÚUnion)Úextract_recipientsÚextract_senderÚflatten_messageÚparse_addressÚquote_addressz
z[][\\()<>@,:;".]z[\\"]zutf-8ÚaddressÚreturnc                 ón   — t         j                  j                  | «      \  }}|xs | j                  «       S )zG
    Parse an email address, falling back to the raw string given.
    )ÚemailÚutilsÚ	parseaddrÚstrip)r   Údisplay_nameÚparsed_addresss      úW/var/www/html/kelly/kelly-backend/venv/lib/python3.12/site-packages/aiosmtplib/email.pyr
   r
   !   s.   € ô $)§;¡;×#8Ñ#8¸Ó#AÑ €L�.àÒ,˜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Øˆ~Ð˜aÐ Ð r   Úpairc                 óÄ   — | \  }}|rt         j                  |«      }|› d|› d�S d}t        j                  |«      r$d}t        j                  d|«      }|› |› |› d|› d�S |S )a}  
    Copied from the standard library, and modified to handle international (UTF-8)
    email addresses.

    The inverse of parseaddr(), this takes a 2-tuple of the form
    (realname, email_address) and returns the string value suitable
    for an RFC 2822 From, To or Cc header.
    If the first element of pair is false, then the second element is
    returned unmodified.
    z <r   Ú Ú"z\\\g<0>)ÚUTF8_CHARSETÚheader_encodeÚSPECIALS_REGEXÚsearchÚESCAPES_REGEXÚsub)r   Únamer   Úencoded_nameÚquotess        r   Ú
formataddrr'   2   s}   € ð �M€Dˆ'ÙÜ#×1Ñ1°$Ó7ˆØ�˜r ' ¨!Ð,Ð,àˆÜ× Ñ  Ô&ØˆFÜ ×$Ñ$ Z°Ó6ˆDØ�X˜d˜V F 8¨2¨g¨Y°aÐ8Ð8à€Nr   FÚ8bit)Úutf8Úcte_typeÚmessager)   r*   c               ó  — t        j                   | «      }|d= |d= t        | t        j                  j                  «      r1t        j
                  j                  j                  t        ||¬«      }n/t        j
                  j                  j                  t        |¬«      }t        j                  «       5 }t        j                  j                  ||¬«      }|j                  |«       |j                  «       }d d d «       |S # 1 sw Y   S xY w)NÚBccú
Resent-Bcc)Úlinesepr)   r*   )r/   r*   )Úpolicy)ÚcopyÚ
isinstancer   r+   ÚEmailMessager0   ÚdefaultÚcloneÚLINE_SEPÚcompat32ÚioÚBytesIOÚ	generatorÚBytesGeneratorÚflattenÚgetvalue)r+   r)   r*   Úmessage_copyr0   Ú	messageior:   Úflat_messages           r   r	   r	   K   sÜ   € ô —9‘9˜WÓ%€LØ�UÐØ�\Ð"ô �'œ5Ÿ=™=×5Ñ5Ô6ä—‘×%Ñ%×+Ñ+ÜØØð ,ó 
‰ô —‘×&Ñ&×,Ñ,´XÈÐ,ÓQˆä	�‰Œ˜Ü—O‘O×2Ñ2°9ÀVÐ2ÓLˆ	Ø×Ñ˜,Ô'Ø ×)Ñ)Ó+ˆ÷ 
ð
 Ð÷ 
ð
 Ðús   Â4ADÄDÚheaderc          	      ó„  — g }t        | t        j                  j                  «      rm| j                  D ]\  }t        |t        j                  j
                  «      r|j                  |j                  «       ŒC|j                  t        |«      «       Œ^ |S t        | t        j                  j                  «      rRt        j                  j                  | «      D ].  \  }}|€d}|j                  t        t        ||¬«      «      «       Œ0 |S |j                  d„ t        j                  j                  | g«      D «       «       |S )zl
    Convert address headers into raw email addresses, suitable for use in
    low level SMTP commands.
    Úascii)Úencodingc              3   ó&   K  — | ]	  \  }}|–— Œ y ­w)N© )Ú.0Ú_Úaddrs      r   Ú	<genexpr>z$extract_addresses.<locals>.<genexpr>ƒ   s   è ø€ ÐPÑ-O¡' ! TœÑ-Oùs   ‚)r2   r   ÚheaderregistryÚAddressHeaderÚ	addressesÚAddressÚappendÚ	addr_specr
   rA   ÚHeaderÚdecode_headerÚstrÚextendr   Úgetaddresses)rA   rM   r   Úaddress_bytesÚcharsets        r   Úextract_addressesrX   l   s  € ð €IÜ�&œ%×.Ñ.×<Ñ<Ô=Ø×'Ô'ˆGô ˜'¤5×#7Ñ#7×#?Ñ#?Ô@Ø× Ñ  ×!2Ñ!2Õ3à× Ñ ¤¨wÓ!7Õ8ð (ð Ðô 
�FœEŸL™L×/Ñ/Ô	0Ü&+§l¡l×&@Ñ&@ÀÖ&HÑ"ˆM˜7ØˆØ!�Ø×Ñœ]¬3¨}ÀwÔ+OÓPÕQð 'Ið Ðð 	×ÑÑP¬U¯[©[×-EÑ-EÀvÀhÔ-OÓPÔPàÐr   c                ó°   — | j                  d«      }|�t        |«      dkD  rt        d«      ‚|rd}d}nd}d}|| v r| |   }n| |   }|€yt        |«      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Ú
ValueErrorrX   )r+   Úresent_datesÚsender_header_nameÚfrom_header_nameÚsender_headers        r   r   r   ˆ   s„   € ð —?‘? =Ó1€LàÐ¤C¨Ó$5¸Ò$9ÜÐKÓLÐLÙ	Ø,ÐØ(Ñà%ÐØ!Ðð ˜WÑ$ØÐ 2Ñ3‰àÐ 0Ñ1ˆàÐØä˜]Ó+¨AÑ.Ð.r   c                óâ   — g }| j                  d«      }|�t        |«      dkD  rt        d«      ‚|rd}nd}|D ]4  }| j                  |g ¬«      D ]  }|j                  t	        |«      «       Œ Œ6 |S )z?
    Extract the recipients from the message object given.
    rZ   r[   r\   )z	Resent-Toz	Resent-Ccr.   )ÚToÚCcr-   )Úfailobj)r_   r`   ra   rT   rX   )r+   Ú
recipientsrb   Úrecipient_headersrA   Ú	recipients         r   r   r   ¦   s�   € ð €Jà—?‘? =Ó1€LàÐ¤C¨Ó$5¸Ò$9ÜÐKÓLÐLÙ	ØDÑà/Ðã#ˆØ Ÿ™¨¸˜Ö<ˆIØ×ÑÔ/°	Ó:Õ;ñ =ð $ð Ðr   )*Ú__doc__r1   Úemail.charsetr   Úemail.generatorÚemail.headerÚemail.headerregistryÚemail.messageÚemail.policyÚemail.utilsr8   ÚreÚtypingr   r   r   r   Ú__all__r6   Úcompiler    r"   rW   ÚCharsetr   rS   r
   r   r'   r+   r3   ÚMessageÚboolÚbytesr	   rK   rL   rA   rQ   rX   r   r   rF   r   r   Ú<module>r}      sµ  ðñó Û Û Û Û Û Û Û Û 	Û 	ß /Ó /ð€ð €Ø�—‘Ð/Ó0€Ø�—
‘
˜8Ó$€Ø�}‰}×$Ñ$ WÓ-€ð-˜3ð - 3ó -ð!˜3ð ! 3ó !ð�U˜3 ˜8‘_ð ¨ó ð: ØòØ�5—=‘=×-Ñ-¨u¯}©}×/DÑ/DÐDÑEðð ð	ð
 ðð óðBØ�#�u×+Ñ+×9Ñ9¸5¿<¹<×;NÑ;NÐNÑOðð 
ˆ#�Yóð8/Ø�5—=‘=×-Ñ-¨u¯}©}×/DÑ/DÐDÑEð/ð ˆc�]ó/ð<Ø�5—=‘=×-Ñ-¨u¯}©}×/DÑ/DÐDÑEðð 
ˆ#�Yôr   