grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]×ËãY@s\dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z ddl mZyddlZdZWnek rÎdZYnXddd d d d gZd ZdZdZdZddfZdZdddfddfdddddfddfddfddfdddfdddfdddfddfd ddfd!dfd"dfd#ddfd$ddfd%ddfd&ddfd'ddfd(ddfd)dfdddddfd*ddfd+ddfd,ddddfd-dfd.dfd/ddfd0dfd1ddfd2ddfd3ddfd4ddfd5dfd6dfd7ddfd8dfd9ddfd:dfd;dfd<ddfi(Zejd=ƒZejd>ƒZejd?ƒZejd@ejƒZejdAƒZ ejdBƒZ!ejdCƒZ"ejdDejƒZ#d@Z$dDZ%GdEd„dƒZ&er¥GdFdG„dGe&ƒZ'ej(dGƒGdHd„de&ƒZ)GdIdJ„dJƒZ*dKj+dLƒZ,dMdN„e-e,dOd…ƒDƒZ.dPd „Z/dQd „Z0dRd „Z1dSd „Z2e3dTkrXddl4Z4ddl5Z5y)e4j4ej6dOd…dUƒ\Z7Z8Wn:e4j9k r¹Z:zfff\Z7Z8WYddZ:[:XnXdZ;xQe7D]I\Z<Z:e<dVkrîe=e:ƒZn"e<dWkre:Z;e8 re;fZ8qÇWe8 r$dXfZ8e8dZ>e5j?ƒZ@e5j5dYe@e>pOdZfƒZAd[d\e@d]d^iZBd_e@eAffd`daffdbdadcffdddffdeddddeBffdfdgdhffdiddffdjddkdlffdmdndoffdpdndqdrffdsffdtffduffdvfffZCdiffdwdxffdyd0dzffdwd{ffdedddeBffduffd|fffZDd}d~„ZEy‰e;r³e)e;ƒZFn e&e>ƒZFeFjGdkrÞeCdOd…ZCeFjHdeFjIƒeFjHd€eFjJfƒx!eCD]\ZKZ8eEeKe8ƒqWxheEdfd�d‚fƒD]QZLejMdƒeLƒZNeNrseNjOdOƒZPneLj+ƒdO ZPeEd„ePfƒqCWx~eDD]v\ZKZ8eEeKe8ƒZQeKe8fdyd0dzffkrÛqŸeQdO j+ƒZReR röqŸeEdyd"d…eRdO d†fƒqŸWeSd‡ƒWn1eSdˆƒe rPeSd‰ej6dƒ‚YnXdS)Šz2.58éN)ÚdatetimeÚtimezoneÚ timedelta)ÚDEFAULT_BUFFER_SIZETFÚIMAP4Ú IMAP4_streamÚInternaldate2tupleÚInt2APÚ ParseFlagsÚTime2Internaldates é�iáZ IMAP4REV1i@BÚAPPENDÚAUTHÚSELECTEDÚ AUTHENTICATEÚNONAUTHÚ CAPABILITYÚLOGOUTÚCHECKÚCLOSEÚCOPYÚCREATEÚDELETEÚ DELETEACLÚENABLEÚEXAMINEÚEXPUNGEÚFETCHÚGETACLÚ GETANNOTATIONÚGETQUOTAÚ GETQUOTAROOTÚMYRIGHTSÚLISTÚLOGINÚLSUBÚ NAMESPACEÚNOOPÚPARTIALÚ PROXYAUTHÚRENAMEÚSEARCHÚSELECTÚSETACLÚ SETANNOTATIONÚSETQUOTAÚSORTÚSTARTTLSÚSTATUSÚSTOREÚ SUBSCRIBEÚTHREADÚUIDÚ UNSUBSCRIBEs\+( (?P.*))?s.*FLAGS \((?P[^\)]*)\)sÕ.*INTERNALDATE "(?P[ 0123][0-9])-(?P[A-Z][a-z][a-z])-(?P[0-9][0-9][0-9][0-9]) (?P[0-9][0-9]):(?P[0-9][0-9]):(?P[0-9][0-9]) (?P[-+])(?P[0-9][0-9])(?P[0-9][0-9])"s.*{(?P\d+)}$s \r\n|\r|\ns)\[(?P[A-Z-]+)( (?P[^\]]*))?\]s$\* (?P[A-Z-]+)( (?P.*))?s3\* (?P\d+) (?P[A-Z-]+)( (?P.*))?c@sÇeZdZGdd„deƒZGdd„deƒZGdd„deƒZdedd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdedd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Z d:d;„Z!d<d=„Z"d>d?„Z#d@dA„Z$dBdC„Z%dDdE„Z&dFdG„Z'dHdIdJdK„Z(dLdM„Z)dNdO„Z*dPdQ„Z+dRdS„Z,dHdIdTdU„Z-dVdW„Z.dXdY„Z/dZd[„Z0d\d]„Z1d^d_„Z2d`da„Z3dbdc„Z4dddedfdg„Z5dhdi„Z6djdk„Z7dldm„Z8dndo„Z9dpdqdr„Z:dsdt„Z;dudv„Z<dwdx„Z=dydz„Z>d{d|„Z?d}d~„Z@dd€„ZAd�d‚„ZBdƒd„„ZCd…d†„ZDd‡dˆ„ZEd‰dŠ„ZFd‹dŒ„ZGd�dŽ„ZHd�d�„ZId‘d’„ZJd“d”„ZKd•d–„ZLd—d˜„ZMd™dš„ZNdpS)›rc@seZdZdS)z IMAP4.errorN)Ú__name__Ú __module__Ú __qualname__©r;r;ú,/opt/alt/python35/lib64/python3.5/imaplib.pyÚerror«s r=c@seZdZdS)z IMAP4.abortN)r8r9r:r;r;r;r<Úabort¬s r>c@seZdZdS)zIMAP4.readonlyN)r8r9r:r;r;r;r<Úreadonly­s r?ÚcCs¸t|_d|_d|_i|_i|_d|_d|_d|_d|_ |j ƒ|j ||ƒy|j ƒWn8t k r³y|jƒWntk r«YnX‚YnXdS)Nrr@Fr)ÚDebugÚdebugÚstateÚliteralÚtagged_commandsÚuntagged_responsesÚcontinuation_responseÚ is_readonlyÚtagnumÚ_tls_establishedÚ _mode_asciiÚopenÚ_connectÚ ExceptionÚshutdownÚOSError)ÚselfÚhostÚportr;r;r<Ú__init__¯s&            zIMAP4.__init__cCsFd|_d|_tjttjƒ|_tjttjƒ|_dS)NFÚascii) Ú utf8_enabledÚ _encodingÚreÚcompileÚ_LiteralÚASCIIÚLiteralÚ_Untagged_statusÚUntagged_status)rQr;r;r<rKÈs  zIMAP4._mode_asciicCs:d|_d|_tjtƒ|_tjtƒ|_dS)NTzutf-8)rVrWrXrYrZr\r]r^)rQr;r;r<Ú _mode_utf8Ïs  zIMAP4._mode_utf8cCsßttjddƒƒ|_tjd|jdtjƒ|_|jƒ|_ d|j krhd|_ n-d|j krƒd|_ n|j |j ƒ‚|j ƒx*tD]"}||jkr¾q¦||_dSW|j d ƒ‚dS) Niiÿÿs(?Ps"\d+) (?P[A-Z]+) (?P.*)ZPREAUTHrÚOKrzserver not IMAP4 compliant)r ÚrandomÚrandintÚtagprerXrYr[ÚtagreÚ _get_responseZwelcomerFrCr=Ú_get_capabilitiesÚAllowedVersionsÚ capabilitiesÚPROTOCOL_VERSION)rQÚversionr;r;r<rMÖs       zIMAP4._connectcCs3|tkrt||jƒƒStd|ƒ‚dS)NzUnknown IMAP4 command: '%s')ÚCommandsÚgetattrÚlowerÚAttributeError)rQÚattrr;r;r<Ú __getattr__s zIMAP4.__getattr__cCs|S)Nr;)rQr;r;r<Ú __enter__szIMAP4.__enter__c Gs'y|jƒWntk r"YnXdS)N)ÚlogoutrP)rQÚargsr;r;r<Ú__exit__ s zIMAP4.__exit__cCstj|j|jfƒS)N)ÚsocketÚcreate_connectionrRrS)rQr;r;r<Ú_create_socketszIMAP4._create_socketcCs:||_||_|jƒ|_|jjdƒ|_dS)NÚrb)rRrSrwÚsockÚmakefileÚfile)rQrRrSr;r;r<rLs  z IMAP4.opencCs|jj|ƒS)N)r{Úread)rQÚsizer;r;r<r|"sz IMAP4.readcCs?|jjtdƒ}t|ƒtkr;|jdtƒ‚|S)Nézgot more than %d bytes)r{ÚreadlineÚ_MAXLINEÚlenr=)rQÚliner;r;r<r'szIMAP4.readlinecCs|jj|ƒdS)N)ryÚsendall)rQÚdatar;r;r<Úsend/sz IMAP4.sendcCs’|jjƒzpy|jjtjƒWnRtk r{}z2|jtjkrit |ddƒdkri‚WYdd}~XnXWd|jjƒXdS)NÚwinerrorri&') r{ÚcloseryrOruÚ SHUT_RDWRrPÚerrnoZENOTCONNrl)rQÚexcr;r;r<rO4s zIMAP4.shutdowncCs|jS)N)ry)rQr;r;r<ruDsz IMAP4.socketcCs]d}|jddg|ƒ\}}|dr8||fS|jƒ\}}|j|||ƒS)NZRECENTr`r~éÿÿÿÿ)Ú_untagged_responseÚnoop)rQÚnameÚtypÚdatr;r;r<ÚrecentPs   z IMAP4.recentcCs|j|dg|jƒƒS)N)rŒÚupper)rQÚcoder;r;r<ÚresponseaszIMAP4.responsecCs¨d}|sd}|r?|d|d fd krEd|}nd}|rZt|ƒ}nd}tjt|ƒ}|jr‰d|d }||_|j||||ƒS) Nr ÚINBOXrr~ú(ú)z(%s)sUTF8 (ó)r‹)r–r—)r ÚMapCRLFÚsubÚCRLFrVrDÚ_simple_command)rQÚmailboxÚflagsÚ date_timeÚmessagerŽrDr;r;r<Úappendos   z IMAP4.appendcCst|jƒ}t|ƒj|_|jd|ƒ\}}|dkra|j|djddƒƒ‚d|_||fS)Nrr`r~zutf-8Úreplacerr‹)r’Ú_AuthenticatorÚprocessrDrœr=ÚdecoderC)rQZ mechanismZ authobjectÚmechr�r�r;r;r<Ú authenticate‰s   zIMAP4.authenticatecCs.d}|j|ƒ\}}|j|||ƒS)Nr)rœrŒ)rQrŽr�r�r;r;r<Ú capability¦szIMAP4.capabilitycCs |jdƒS)Nr)rœ)rQr;r;r<Úcheck¯sz IMAP4.checkc Cs0z|jdƒ\}}Wdd|_X||fS)Nrr)rœrC)rQr�r�r;r;r<r‡·s z IMAP4.closecCs|jd||ƒS)Nr)rœ)rQÚ message_setZ new_mailboxr;r;r<ÚcopyÆsz IMAP4.copycCs|jd|ƒS)Nr)rœ)rQr�r;r;r<ÚcreateÎsz IMAP4.createcCs|jd|ƒS)Nr)rœ)rQr�r;r;r<ÚdeleteÖsz IMAP4.deletecCs|jd||ƒS)Nr)rœ)rQr�Úwhor;r;r<Ú deleteaclÝszIMAP4.deleteaclcCshd|jkrtjdƒ‚|jd|ƒ\}}|dkr^d|jƒkr^|jƒ||fS)NrzServer does not support ENABLEr`z UTF8=ACCEPT)rhrr=rœr’r_)rQr¨r�r„r;r;r<Úenableäs  z IMAP4.enablecCs.d}|j|ƒ\}}|j|||ƒS)Nr)rœrŒ)rQrŽr�r�r;r;r<Úexpungeðs z IMAP4.expungecCs4d}|j|||ƒ\}}|j|||ƒS)Nr)rœrŒ)rQrªZ message_partsrŽr�r�r;r;r<Úfetchþs z IMAP4.fetchcCs+|jd|ƒ\}}|j||dƒS)NrZACL)rœrŒ)rQr�r�r�r;r;r<Úgetacl sz IMAP4.getaclcCs1|jd|||ƒ\}}|j||dƒS)NrÚ ANNOTATION)rœrŒ)rQr�ÚentryZ attributer�r�r;r;r<Ú getannotationszIMAP4.getannotationcCs+|jd|ƒ\}}|j||dƒS)Nr ÚQUOTA)rœrŒ)rQÚrootr�r�r;r;r<ÚgetquotaszIMAP4.getquotacCs^|jd|ƒ\}}|j||dƒ\}}|j||dƒ\}}|||gfS)Nr!r·Z QUOTAROOT)rœrŒ)rQr�r�r�ZquotaZ quotarootr;r;r<Ú getquotaroot)szIMAP4.getquotarootz""Ú*cCs4d}|j|||ƒ\}}|j|||ƒS)Nr#)rœrŒ)rQÚ directoryÚpatternrŽr�r�r;r;r<Úlist4sz IMAP4.listcCsV|jd||j|ƒƒ\}}|dkrC|j|dƒ‚d|_||fS)Nr$r`r~rr‹)rœÚ_quoter=rC)rQÚuserÚpasswordr�r�r;r;r<Úlogin@s $  z IMAP4.logincCs&|||_|_|jd|jƒS)NzCRAM-MD5)rÀrÁr§Ú_CRAM_MD5_AUTH)rQrÀrÁr;r;r<Úlogin_cram_md5NszIMAP4.login_cram_md5cCs]ddl}t|jtƒr0|jjdƒn|j}|jd|j||dƒjƒS)Nrzutf-8ú Úmd5)ÚhmacÚ isinstancerÁÚstrÚencoderÀZHMACÚ hexdigest)rQZ challengerÇÚpwdr;r;r<rÃWs $ zIMAP4._CRAM_MD5_AUTHc Cs…d|_y|jdƒ\}}Wn,ddtjƒdd…g}}YnX|jƒd|jkr{d|jdfS||fS)NrÚNOz%s: %séÚBYE)rCrœÚsysÚexc_inforOrF)rQr�r�r;r;r<rr_s ) z IMAP4.logoutcCs4d}|j|||ƒ\}}|j|||ƒS)Nr%)rœrŒ)rQr¼r½rŽr�r�r;r;r<Úlsubosz IMAP4.lsubcCs+|jd|ƒ\}}|j||dƒS)Nr")rœrŒ)rQr�r�r�r;r;r<ÚmyrightszszIMAP4.myrightscCs.d}|j|ƒ\}}|j|||ƒS)Nr&)rœrŒ)rQrŽr�r�r;r;r<Ú namespace‚szIMAP4.namespacecCs |jdƒS)Nr')rœ)rQr;r;r<r�Œsz IMAP4.noopcCs:d}|j|||||ƒ\}}|j||dƒS)Nr(r)rœrŒ)rQZ message_numZ message_partÚstartÚlengthrŽr�r�r;r;r<Úpartial—s!z IMAP4.partialcCsd}|jd|ƒS)Nr))rœ)rQrÀrŽr;r;r<Ú proxyauth£s zIMAP4.proxyauthcCs|jd||ƒS)Nr*)rœ)rQZ oldmailboxZ newmailboxr;r;r<Úrename°sz IMAP4.renamecGspd}|rE|jr$tjdƒ‚|j|d||Œ\}}n|j||Œ\}}|j|||ƒS)Nr+z'Non-None charset not valid in UTF8 modeÚCHARSET)rVrr=rœrŒ)rQÚcharsetZcriteriarŽr�r�r;r;r<Úsearch¸s !z IMAP4.searchr•FcCs¬i|_||_|r!d}nd}|j||ƒ\}}|dkr^d|_||fSd|_d|jkr�| r�|jd|ƒ‚||jjddgƒfS) Nrr,r`rrz READ-ONLYz%s is not writableÚEXISTS)rFrHrœrCr?Úget)rQr�r?rŽr�r�r;r;r<ÚselectÊs       z IMAP4.selectcCs|jd|||ƒS)Nr-)rœ)rQr�r®Zwhatr;r;r<Úsetaclêsz IMAP4.setaclcGs+|jd|Œ\}}|j||dƒS)Nr.r´)rœrŒ)rQrsr�r�r;r;r<Ú setannotationòszIMAP4.setannotationcCs.|jd||ƒ\}}|j||dƒS)Nr/r·)rœrŒ)rQr¸Zlimitsr�r�r;r;r<ÚsetquotaúszIMAP4.setquotacGs[d}|d|dfdkr*d|}|j||||Œ\}}|j|||ƒS) Nr0rr~r–r—z(%s)r‹)r–r—)rœrŒ)rQZ sort_criteriarÛÚsearch_criteriarŽr�r�r;r;r<Úsorts  z IMAP4.sortNcCsõd}ts|jdƒ‚|jr3|jdƒ‚||jkrQ|jdƒ‚|dkritjƒ}|j|ƒ\}}|dkrÓ|j|j d|j ƒ|_ |j j dƒ|_ d|_|j ƒn|jd ƒ‚|j|||ƒS) Nr1zSSL support missingzTLS session already establishedzTLS not supported by serverr`Úserver_hostnamerxTzCouldn't establish TLS session)ÚHAVE_SSLr=rJr>rhÚsslÚ_create_stdlib_contextrœÚ wrap_socketryrRrzr{rfrŒ)rQÚ ssl_contextrŽr�r�r;r;r<Ústarttlss$      zIMAP4.starttlscCs4d}|j|||ƒ\}}|j|||ƒS)Nr2)rœrŒ)rQr�ÚnamesrŽr�r�r;r;r<Ústatus(sz IMAP4.statuscCsU|d|dfd kr$d|}|jd|||ƒ\}}|j||dƒS) Nrr~r–r—z(%s)r3rr‹)r–r—)rœrŒ)rQrªÚcommandržr�r�r;r;r<Ústore4s z IMAP4.storecCs|jd|ƒS)Nr4)rœ)rQr�r;r;r<Ú subscribe?szIMAP4.subscribecGs7d}|j||||Œ\}}|j|||ƒS)Nr5)rœrŒ)rQZthreading_algorithmrÛrãrŽr�r�r;r;r<ÚthreadGsz IMAP4.threadcGs¹|jƒ}|tkr+|jd|ƒ‚|jt|krj|jd||jdjt|ƒfƒ‚d}|j|||Œ\}}|d kr |}nd}|j|||ƒS) NzUnknown IMAP4 UID command: %sz9command %s illegal in state %s, only allowed in states %sz, r6r+r0r5r)r+r0r5)r’rkr=rCÚjoinrœrŒ)rQrîrsrŽr�r�r;r;r<ÚuidQs      z IMAP4.uidcCs|jd|ƒS)Nr7)rœ)rQr�r;r;r<Ú unsubscribejszIMAP4.unsubscribecGs8|jƒ}|tkr(|jft|<|j||ŒS)N)r’rkrCrœ)rQrŽrsr;r;r<Úxatomrs  z IMAP4.xatomcCsL|dkrd}|j}||kr;||j|ƒn |g|||jjdƒ}|r:|j|dj|jdƒƒ‚dS)NrÏr~r¢r‹)rFrÞr>r¥rW)rQZbyer;r;r<Ú _check_bye–szIMAP4._check_byec Gs�|jt|krHd|_|jd||jdjt|ƒfƒ‚x'd D]}||jkrO|j|=qOWd|jkrš|j rš|jdƒ‚|jƒ}t ||j ƒ}|d|}xL|D]D}|dkrâqÍt |t ƒrt ||j ƒ}|d|}qÍW|j}|dk r}d|_t |ƒt |jƒkrW|}n&d}|t d t|ƒ|j ƒ}y|j|tƒWn8tk rÌ} z|jd | ƒ‚WYdd} ~ XnX|dkrÝ|Sx�x!|jƒr|j|rã|SqãW|r||jƒ}y|j|ƒ|jtƒWn8tk rq} z|jd | ƒ‚WYdd} ~ XnX|sàPqàW|S) Nz9command %s illegal in state %s, only allowed in states %sz, r`rÍÚBADz READ-ONLYz#mailbox status changed to READ-ONLYó z {%s}zsocket error: %s)r`rÍrú)rCrkrDr=ròrFrHr?Ú_new_tagÚbytesrWrÈrÉÚtypeÚ_commandr�r…r›rPr>rerErG) rQrŽrsr�Útagr„ÚargrDZ literatorÚvalr;r;r<rÿœs^             &   &zIMAP4._commandcCsû|dkr|jƒy|j|ƒ\}}Wn�|jk rr}z|jd||fƒ‚WYdd}~XnA|jk r²}z|jd||fƒ‚WYdd}~XnX|dkrÉ|jƒ|dkrñ|jd|||fƒ‚||fS)Nrzcommand: %s => %srúz%s command error: %s %s)rùÚ_get_tagged_responser>r=)rQrŽrr�r„rr;r;r<Ú_command_completeés  +,   zIMAP4._command_completecCsk|jƒ\}}|dgkr0|jdƒ‚t|d|jƒ}|jƒ}t|jƒƒ|_dS)Nz"no CAPABILITY response from serverr~r‹)r¨r=rÉrWr’ÚtupleÚsplitrh)rQr�r�r;r;r<rfús  zIMAP4._get_capabilitiescCsc|jƒ}|j|j|ƒr¤|jjdƒ}||jkrU|jd|ƒ‚|jjdƒ}t||jƒ}|jjdƒ}||gf|j|rÉrWÚUntagged_responser^Ú ContinuationrGr\Úintr|røÚ Response_code)rQÚresprr�r�Zdat2r}r„r;r;r<resH  zIMAP4._get_responsecCsxxq|j|}|dk r*|j|=|S|jƒy|jƒWq|jk ro}z‚WYdd}~XqXqWdS)N)rErùrer>)rQrÚresultrr;r;r<rSs    zIMAP4._get_tagged_responsecCsW|jƒ}|s!|jdƒ‚|jdƒsC|jd|ƒ‚|dd…}|S)Nzsocket error: EOFs z#socket error: unterminated line: %rrÎéþÿÿÿ)rr>Úendswith)rQr‚r;r;r<rns zIMAP4._get_linecCs|j|ƒ|_|jdk S)N)Úmatchr )rQZcreÚsr;r;r<r�sz IMAP4._matchcCsC|jtt|jƒ|jƒ}|jd|_d|j|<|S)Nr~)rcrýrÉrIrWrE)rQrr;r;r<rü�s" zIMAP4._new_tagcCs0|jddƒ}|jddƒ}d|dS)Nú\z\\ú"z\")r¢)rQrr;r;r<r¿•sz IMAP4._quotecGs|j||j||ŒƒS)N)rrÿ)rQrŽrsr;r;r<rœ�szIMAP4._simple_commandcCsN|dkr||fS||jkr2|dgfS|jj|ƒ}||fS)NrÍ)rFÚpop)rQr�r�rŽr„r;r;r<rŒ¢s    zIMAP4._untagged_response)Or8r9r:rNr=r>r?Ú IMAP4_PORTrTrKr_rMrprqrtrwrLr|rr…rOrur‘r”r¡r§r¨r©r‡r«r¬r­r¯r°r±r²r³r¶r¹rºr¾rÂrÄrÃrrrÒrÓrÔr�r×rØrÙrÜrßràrárârärërírïrðrñrórôrõrørùrÿrrfrerrrrür¿rœrŒr;r;r;r<r}s– .   *                                     M  P      c@sIeZdZdeddddd„Zdd„Zdedd„ZdS) Ú IMAP4_SSLr@NcCsž|dk r$|dk r$tdƒ‚|dk rH|dk rHtdƒ‚||_||_|dkr~tjd|d|ƒ}||_tj|||ƒdS)Nz8ssl_context and keyfile arguments are mutually exclusivez9ssl_context and certfile arguments are mutually exclusiveÚcertfileÚkeyfile)Ú ValueErrorrrrçrèrêrrT)rQrRrSrrrêr;r;r<rTés       zIMAP4_SSL.__init__cCs(tj|ƒ}|jj|d|jƒS)Nrå)rrwrêrérR)rQryr;r;r<rwúszIMAP4_SSL._create_socketcCstj|||ƒdS)N)rrL)rQrRrSr;r;r<rLÿszIMAP4_SSL.open)r8r9r:ÚIMAP4_SSL_PORTrTrwrLr;r;r;r<rÖs   rc@s^eZdZdd„Zdddd„Zdd„Zdd „Zd d „Zd d „ZdS)rcCs||_tj|ƒdS)N)rîrrT)rQrîr;r;r<rTs zIMAP4_stream.__init__Nc Csd|_d|_d|_d|_tj|jdtdtjdtjddddƒ|_ |j j |_ |j j |_ dS)NÚbufsizeÚstdinÚstdoutÚshellTÚ close_fds)rRrSryr{Ú subprocessÚPopenrîrÚPIPEr¤rÚ writefiler Úreadfile)rQrRrSr;r;r<rLs    zIMAP4_stream.opencCs|jj|ƒS)N)r'r|)rQr}r;r;r<r|+szIMAP4_stream.readcCs |jjƒS)N)r'r)rQr;r;r<r0szIMAP4_stream.readlinecCs!|jj|ƒ|jjƒdS)N)r&ÚwriteÚflush)rQr„r;r;r<r…5szIMAP4_stream.sendcCs+|jjƒ|jjƒ|jjƒdS)N)r'r‡r&r¤Úwait)rQr;r;r<rO;s  zIMAP4_stream.shutdown) r8r9r:rTrLr|rr…rOr;r;r;r<r s    c@s@eZdZdd„Zdd„Zdd„Zdd„Zd S) r£cCs ||_dS)N)r¦)rQZmechinstr;r;r<rTIsz_Authenticator.__init__cCs5|j|j|ƒƒ}|dkr(dS|j|ƒS)Nó*)r¦r¥rÊ)rQr„Úretr;r;r<r¤Ls z_Authenticator.processcCsŸd}t|tƒr$|jdƒ}xt|ršt|ƒdkrb|dd…}|dd…}n |}d}tj|ƒ}|r'||dd…}q'W|S)Nrözutf-8é0r~r‹)rÈrÉrÊr�ÚbinasciiZ b2a_base64)rQÚinpZoupÚtÚer;r;r<rÊRs  z_Authenticator.encodecCs|s dStj|ƒS)Nrö)r.Z a2b_base64)rQr/r;r;r<r¥jsz_Authenticator.decodeN)r8r9r:rTr¤rÊr¥r;r;r;r<r£Cs    r£z0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov DecrÅcCs)i|]\}}|d|jƒ“qS)r~)rÊ)Ú.0Únrr;r;r<ú ps r4r~c Cs4tj|ƒ}|sdSt|jdƒ}|jdƒ}t|jdƒƒ}t|jdƒƒ}t|jdƒƒ}t|jdƒƒ}t|jdƒƒ}t|jdƒƒ} t|jd ƒƒ} | d | d } |d kró| } ||||||d ddf } tj| ƒ| } tj| ƒS)NÚmonÚzonenÚdayÚyearÚhourÚminÚsecÚzonehÚzonemé<ó-r~r‹r‹r‹) Ú InternalDaterÚMon2numr r ÚcalendarZtimegmÚtimeÚ localtime)rr r5r6r7r8r9r:r;r<r=ZzoneÚttÚutcr;r;r<rrs$ !cCs\d}d}tt|ƒƒ}x7|rWt|dƒ\}}|||d…|}q!W|S)NrösABCDEFGHIJKLMNOPér~)r ÚabsÚdivmod)ÚnumrZAPÚmodr;r;r<r •s cCs2tj|ƒ}|sfSt|jdƒjƒƒS)Nrž)ÚFlagsrrr r)rr r;r;r<r ¢sc Cs†t|ttfƒr3tj|tjƒjƒ}n0t|tƒr÷y |j }Wnqt k rÂt j r´|d}|d kršt j t j|ƒƒd}t jt jf| }n t j }YnXtd|ƒ}t|dd…dt|ƒŒ}nlt|tƒr*|jdkr!tdƒ‚|}n9t|tƒrW|d|d fd krW|Std ƒ‚d jt|jƒ}|j|ƒS)Nér~ZsecondséÚtzinfozdate_time must be awarerrzdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z"r‹r‹)rr)rÈr ÚfloatrZ fromtimestamprrFZ astimezonerÚ tm_gmtoffrnrCÚdaylightrDÚmktimeÚaltzonerrOrrÉÚformatÚMonthsZmonthÚstrftime)rŸZdtZgmtoffÚdstZdeltaÚfmtr;r;r<r ­s0       %  ) Ú__main__zd:s:z-dz-sr@zIMAP password for %s on %s: Ú localhostzJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)srÀZlfÚ rÂr¬z /tmp/xxx 1rÙz/tmp/yyyz /tmp/yyz 2r¡r¾z/tmpzyy*rßrÜZSUBJECTZtestr²Ú1z(FLAGS INTERNALDATE RFC822)rïÚFLAGSz (\Deleted)rÔr±r‘r‡r”Z UIDVALIDITYróZALLrÝrrcCsftjd||fƒtt|ƒ|Œ\}}tjd|||fƒ|dkrb|d‚|S)Nz%s %sz %s => %s %srÍr)ÚMÚ_mesgrl)Úcmdrsr�r�r;r;r<Úruns  rbzPROTOCOL_VERSION = %szCAPABILITIES = %rz/tmp/zyy%z .*"([^"]+)"$r­z%sz:(FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822.TEXT)z All tests OK.z Tests failed.z8 If you would like to see debugging output, try: %s -d5 )TÚ __version__r.r‰rarXrur#rÐrCrBrrrÚiorrçræÚ ImportErrorÚ__all__r›rArrrgr€rkrYr rLr@r[r\r™rr r^rZr]rrr¡rr£rrVÚ enumeraterArr r r r8ZgetoptZgetpassÚargvZoptlistrsr=rZstream_commandÚoptr rRZgetuserZUSERZPASSWDZ test_mesgZ test_seq1Z test_seq2rbr_rCr`rirhraÚmlrr r Úpathr�róÚprintr;r;r;r<Ús:l                                          ÿÿÿÿ[1 9,# # ) )%