o
    žÁ<WU  ã                   @   sP   d dl Z d dlZd dlmZ ddlmZmZ de _e e	¡Z
G dd„ deƒZdS )é    N)Úsettingsé   )ÚEmailTransportÚMessageParseErrori@B c                   @   s<   e Zd Z		ddd„Zdd„ Zdd	„ Zd
d„ Zddd„ZdS )ÚImapTransportNFÚ c                 C   sv   t tddƒ| _t tdd ƒ| _|| _|| _|| _|| _|| _|r-t	j
| _| js+d| _d S d S t	j| _| js9d| _d S d S )NÚDJANGO_MAILBOX_MAX_MESSAGE_SIZEFÚ*DJANGO_MAILBOX_INTEGRATION_TESTING_SUBJECTiá  é�   )Úgetattrr   Úmax_message_sizeÚintegration_testing_subjectÚhostnameÚportÚarchiveÚfolderÚtlsÚimaplibÚ	IMAP4_SSLÚ	transportÚIMAP4)Úselfr   r   Ússlr   r   r   © r   úP/var/www/html/env/lib/python3.10/site-packages/django_mailbox/transports/imap.pyÚ__init__   s0   ýý
ÿ
ÿzImapTransport.__init__c                 C   sZ   |   | j| j¡| _| jr| j ¡  | j ||¡\}}| jr&| j | j¡ d S | j ¡  d S ©N)	r   r   r   Úserverr   ÚstarttlsÚloginr   Úselect)r   ÚusernameÚpasswordÚtypÚmsgr   r   r   Úconnect0   s   
zImapTransport.connectc                 C   s6   | j  dd d¡\}}|d  ¡ }|r| ¡  d¡S g S )NÚsearchÚALLr   ú )r   ÚuidÚstripÚdecodeÚsplit)r   ÚresponseÚmessage_idsÚmessage_id_stringr   r   r   Ú_get_all_message_ids;   s
   z"ImapTransport._get_all_message_idsc           	      C   s°   g }| j  dd |¡d¡\}}|D ]D}| ¡ }z!| d¡d }| d¡d  d¡}t|ƒt| jƒkr7| |¡ W q t	yU } zt
 d||d	 f ¡ W Y d }~qd }~ww |S )
NÚfetchú,z(RFC822.SIZE)r(   é   é   ú)zValueError: %s working on %sr   )r   r)   Újoinr+   r,   ÚrstripÚintr   ÚappendÚ
ValueErrorÚloggerÚwarning)	r   r.   Úsafe_message_idsÚstatusÚdataÚeach_msgr)   ÚsizeÚer   r   r   Ú_get_small_message_idsF   s,   ý
€ÿ€üz$ImapTransport._get_small_message_idsc              	   c   s  � |   ¡ }|s	d S | jr|  |¡}| jr+| jj| jd�\}}|d d u r+| j | j¡ |D ]R}z1| j d|d¡\}}|s>W q-z|  |d d ¡}W n
 t	yS   Y W q-w |r\||ƒs\W q-|V  W n	 t
yi   Y q-w | jrv| j d|| j¡ | j d|dd	¡ q-| j ¡  d S )
N)Úpatternr   r1   z(RFC822)r   ÚcopyÚstorez+FLAGSz
(\Deleted))r0   r   rC   r   r   ÚlistÚcreater)   Úget_email_from_bytesÚ	TypeErrorr   Úexpunge)r   Ú	conditionr.   r#   Úfoldersr)   Úmsg_contentsÚmessager   r   r   Úget_message`   s>   €
ü
ÿ
zImapTransport.get_message)NFFr   Nr   )Ú__name__Ú
__module__Ú__qualname__r   r%   r0   rC   rP   r   r   r   r   r      s    
þr   )r   ÚloggingÚdjango.confr   Úbaser   r   Ú_MAXLINEÚ	getLoggerrQ   r;   r   r   r   r   r   Ú<module>   s    
