a XC?hØ×ã+@s˜dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z ddl mZzddlZdZWney’dZYn0gd¢ZdZdZd Zd Zd Zd Zd Zdddddddddddddddddddddddddddddddddddddddddddœ*Ze d¡Ze d¡Ze d¡Ze dej¡Z e d¡Z!e d¡Z"e d¡Z#e dej¡Z$dZ%dZ&Gdd„dƒZ'er Gdd„de'ƒZ(e )d¡Gd d!„d!e'ƒZ*Gd"d#„d#ƒZ+d$ ,d%¡Z-d&d'„e.e-d(d…ƒDƒZ/d)d*„Z0d+d,„Z1d-d.„Z2d/d0„Z3e4d1kr”ddl5Z5ddl6Z6ze5 5ej7d(d…d2¡\Z8Z9Wn0e5j:yjZ;zd3\Z8Z9WYdZ;[;n dZ;[;00dZe;ƒZne=d5krte;Zd?d@dAddeCffdBdCdDdEdFdGdHdIdJfZDdKdLdMdNd@dddeCffdIdOfZEdPdQ„ZFze<r\e*e<ƒZGne'e?ƒZGeGjHdRkr|eDd(d…ZDeG IdSeGjJ¡eG IdTeGjKf¡eDD]\ZLZ9eFeLe9ƒq¢eFdUdVƒD]qeFdZd[d\eSdXd]fƒqeTd^ƒWn.eTd_ƒesŒeTd`ej7dƒ‚Yn0dS)az2.58éN)ÚdatetimeÚtimezoneÚ timedelta)ÚDEFAULT_BUFFER_SIZETF)ÚIMAP4Ú IMAP4_streamÚInternaldate2tupleÚInt2APÚ ParseFlagsÚTime2Internaldateó éiá)Z IMAP4REV1ri@Bi)ÚAUTHÚSELECTED)ÚNONAUTH)rrrÚLOGOUT)r)r)*ÚAPPENDÚ AUTHENTICATEÚ CAPABILITYÚCHECKÚCLOSEÚCOPYÚCREATEÚDELETEÚ DELETEACLÚENABLEÚEXAMINEÚEXPUNGEÚFETCHÚGETACLÚ GETANNOTATIONÚGETQUOTAÚ GETQUOTAROOTÚMYRIGHTSÚLISTÚLOGINrÚLSUBZMOVEÚ NAMESPACEÚNOOPÚPARTIALÚ PROXYAUTHÚRENAMEÚSEARCHÚSELECTÚSETACLÚ SETANNOTATIONÚSETQUOTAÚSORTÚSTARTTLSÚSTATUSÚSTOREÚ SUBSCRIBEÚTHREADÚUIDÚ UNSUBSCRIBEÚUNSELECTs\+( (?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ƒZdedfd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdedfdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Z d;d<„Z!d=d>„Z"d?d@„Z#dAdB„Z$dCdD„Z%dEdF„Z&dGdH„Z'ddKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dždUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0d]d^„Z1d_d`„Z2dadb„Z3dcdd„Z4dŸdgdh„Z5didj„Z6dkdl„Z7dmdn„Z8dodp„Z9d dqdr„Z:dsdt„Z;dudv„Zd{d|„Z?d}d~„Z@dd€„ZAdd‚„ZBdƒd„„ZCd…d†„ZDd‡dˆ„ZEd‰dŠ„ZFd‹dŒ„ZGddŽ„ZHd¡dd„ZId‘d’„ZJd“d”„ZKd•d–„ZLd—d˜„ZMd™dš„ZNd›dœ„ZOdS)¢rc@s eZdZdS)z IMAP4.errorN©Ú__name__Ú __module__Ú __qualname__©r>r>ú,/opt/alt/python39/lib64/python3.9/imaplib.pyÚerror»ór@c@s eZdZdS)z IMAP4.abortNr:r>r>r>r?Úabort¼rArBc@s eZdZdS)zIMAP4.readonlyNr:r>r>r>r?Úreadonly½rArCÚNc Cs’t|_d|_d|_i|_i|_d|_d|_d|_d|_ |  ¡|  |||¡z |  ¡Wn4t yŒz | ¡Wnty„Yn0‚Yn0dS)NrrDFr)ÚDebugÚdebugÚstateÚliteralÚtagged_commandsÚuntagged_responsesÚcontinuation_responseÚ is_readonlyÚtagnumÚ_tls_establishedÚ _mode_asciiÚopenÚ_connectÚ ExceptionÚshutdownÚOSError©ÚselfÚhostÚportÚtimeoutr>r>r?Ú__init__¿s&    zIMAP4.__init__cCs0d|_d|_t ttj¡|_t ttj¡|_dS)NFÚascii) Ú utf8_enabledÚ _encodingÚreÚcompileÚ_LiteralÚASCIIÚLiteralÚ_Untagged_statusÚUntagged_status©rVr>r>r?rOØszIMAP4._mode_asciicCs(d|_d|_t t¡|_t t¡|_dS)NTúutf-8)r\r]r^r_r`rbrcrdrer>r>r?Ú _mode_utf8ßs zIMAP4._mode_utf8cCsœtt dd¡ƒ|_t d|jdtj¡|_|  ¡|_ d|j vrHd|_ nd|j vrZd|_ n |  |j ¡‚| ¡tD]}||jvr‚qr||_dS|  d ¡‚dS) Niiÿÿs(?Ps"\d+) (?P[A-Z]+) (?P.*)ZPREAUTHrÚOKrzserver not IMAP4 compliant)r ÚrandomZrandintÚtagprer^r_raÚtagreÚ __version__Ú _get_responseZwelcomerJrGr@Ú_get_capabilitiesÚAllowedVersionsÚ capabilitiesÚPROTOCOL_VERSION)rVÚversionr>r>r?rQæs*ÿþþ     zIMAP4._connectcCs&|tvrt|| ¡ƒStd|ƒ‚dS)NzUnknown IMAP4 command: '%s')ÚCommandsÚgetattrÚlowerÚAttributeError)rVÚattrr>r>r?Ú __getattr__szIMAP4.__getattr__cCs|S©Nr>rer>r>r?Ú __enter__szIMAP4.__enter__cGs2|jdkrdSz | ¡Wnty,Yn0dS©Nr)rGÚlogoutrT)rVÚargsr>r>r?Ú__exit__s    zIMAP4.__exit__cCs`|dur|stdƒ‚|jsdn|j}t d||j|j¡||jf}|durVt ||¡St |¡S)Nz0Non-blocking socket (timeout=0) is not supportedz imaplib.open)Ú ValueErrorrWÚsysÚauditrXÚsocketZcreate_connection)rVrYrWZaddressr>r>r?Ú_create_socket&s   zIMAP4._create_socketcCs*||_||_| |¡|_|j d¡|_dS)NÚrb)rWrXrƒÚsockÚmakefileÚfilerUr>r>r?rP3s z IMAP4.opencCsVt|tƒ}|j |¡}||krRt|ƒ|krRt|||ƒ}||j |¡7}||7}q|Sry)ÚminÚ_SAFE_BUF_SIZEr‡ÚreadÚlen)rVÚsizeZcursizeÚdataÚdeltar>r>r?rŠ?s   z IMAP4.readcCs.|j td¡}t|ƒtkr*| dt¡‚|S)Nézgot more than %d bytes)r‡ÚreadlineÚ_MAXLINEr‹r@©rVÚliner>r>r?rJs zIMAP4.readlinecCst d||¡|j |¡dS)Nz imaplib.send)r€rr…Zsendall©rVrr>r>r?ÚsendRsz IMAP4.sendc Cs€|j ¡zdz|j tj¡WnBty`}z*|jtjkrLt |ddƒdkrL‚WYd}~n d}~00W|j ¡n |j ¡0dS)NZwinerrorri&') r‡Úcloser…rSr‚Z SHUT_RDWRrTÚerrnoZENOTCONNrt)rVÚexcr>r>r?rSXs  ÿzIMAP4.shutdowncCs|jSry)r…rer>r>r?r‚hsz IMAP4.socketcCsBd}| ddg|¡\}}|dr(||fS| ¡\}}| |||¡S)NZRECENTrhéÿÿÿÿ)Ú_untagged_responseÚnoop©rVÚnameÚtypÚdatr>r>r?Úrecentts  z IMAP4.recentcCs| |dg| ¡¡Sry)ršÚupper)rVÚcoder>r>r?Úresponse…szIMAP4.responsecCsxd}|s d}|r.|d|dfdkr2d|}nd}|r@t|ƒ}nd}t t|¡}|jrbd|d}||_| ||||¡S) NrÚINBOXrr™©ú(ú)ú(%s)sUTF8 (ó))r ÚMapCRLFÚsubÚCRLFr\rHÚ_simple_command)rVÚmailboxÚflagsÚ date_timeÚmessagerrHr>r>r?Úappend“s    z IMAP4.appendcCsP| ¡}t|ƒj|_| d|¡\}}|dkrB| |d dd¡¡‚d|_||fS)Nrrhr™rfÚreplacer)r¡Ú_AuthenticatorÚprocessrHr­r@ÚdecoderG)rVZ mechanismZ authobjectÚmechržrŸr>r>r?Ú authenticate­s zIMAP4.authenticatecCs d}| |¡\}}| |||¡S)Nr©r­ršrœr>r>r?Ú capabilityÊszIMAP4.capabilitycCs | d¡S)Nr©r­rer>r>r?ÚcheckÓsz IMAP4.checkcCs*z| d¡\}}Wd|_nd|_0||fS)Nrr©r­rG©rVržrŸr>r>r?r–Ûsz IMAP4.closecCs| d||¡S)Nrr»)rVÚ message_setZ new_mailboxr>r>r?Úcopyêsz IMAP4.copycCs | d|¡S)Nrr»©rVr®r>r>r?Úcreateòsz IMAP4.createcCs | d|¡S)Nrr»rÁr>r>r?Údeleteúsz IMAP4.deletecCs| d||¡S)Nrr»)rVr®Úwhor>r>r?Ú deleteaclszIMAP4.deleteaclcCsHd|jvrt d¡‚| d|¡\}}|dkr@d| ¡vr@| ¡||fS)NrzServer does not support ENABLErhz UTF8=ACCEPT)rprr@r­r¡rg)rVrºržrr>r>r?Úenables   z IMAP4.enablecCs d}| |¡\}}| |||¡S)Nrr¹rœr>r>r?Úexpunges z IMAP4.expungecCs$d}| |||¡\}}| |||¡S)Nrr¹)rVr¿Z message_partsrržrŸr>r>r?Úfetch"s z IMAP4.fetchcCs| d|¡\}}| ||d¡S)NrZACLr¹©rVr®ržrŸr>r>r?Úgetacl1sz IMAP4.getaclcCs"| d|||¡\}}| ||d¡S)Nr Ú ANNOTATIONr¹)rVr®ÚentryZ attributeržrŸr>r>r?Ú getannotation:szIMAP4.getannotationcCs| d|¡\}}| ||d¡S)Nr!ÚQUOTAr¹)rVÚrootržrŸr>r>r?ÚgetquotaBszIMAP4.getquotacCs@| d|¡\}}| ||d¡\}}| ||d¡\}}|||gfS)Nr"rÎZ QUOTAROOTr¹)rVr®ržrŸZquotaZ quotarootr>r>r?Ú getquotarootMszIMAP4.getquotarootú""Ú*cCs$d}| |||¡\}}| |||¡S)Nr$r¹©rVZ directoryÚpatternrržrŸr>r>r?ÚlistXsz IMAP4.listcCs<| d|| |¡¡\}}|dkr.| |d¡‚d|_||fS)Nr%rhr™r)r­Ú_quoter@rG)rVÚuserÚpasswordržrŸr>r>r?Úloginds z IMAP4.logincCs|||_|_| d|j¡S)NzCRAM-MD5)rØrÙr¸Ú_CRAM_MD5_AUTH)rVrØrÙr>r>r?Úlogin_cram_md5rszIMAP4.login_cram_md5cCsBddl}t|jtƒr |j d¡n|j}|jd| ||d¡ ¡S)Nrrfú Zmd5)ÚhmacÚ isinstancerÙÚstrÚencoderØZHMACZ hexdigest)rVZ challengerÞÚpwdr>r>r?rÛ{s ÿzIMAP4._CRAM_MD5_AUTHcCs$d|_| d¡\}}| ¡||fSr{)rGr­rSr¾r>r>r?r|ƒsz IMAP4.logoutcCs$d}| |||¡\}}| |||¡S)Nr&r¹rÔr>r>r?Úlsubsz IMAP4.lsubcCs| d|¡\}}| ||d¡S)Nr#r¹rÉr>r>r?Úmyrights›szIMAP4.myrightscCs d}| |¡\}}| |||¡S)Nr'r¹rœr>r>r?Ú namespace£szIMAP4.namespacecCs | d¡S)Nr(r»rer>r>r?r›­sz IMAP4.noopcCs(d}| |||||¡\}}| ||d¡S)Nr)rr¹)rVZ message_numZ message_partÚstartZlengthrržrŸr>r>r?Úpartial¸sz IMAP4.partialcCsd}| d|¡S)Nr*r»)rVrØrr>r>r?Ú proxyauthÄs zIMAP4.proxyauthcCs| d||¡S)Nr+r»)rVZ oldmailboxZ newmailboxr>r>r?ÚrenameÑsz IMAP4.renamecGsXd}|r4|jrt d¡‚|j|d|g|¢RŽ\}}n|j|g|¢RŽ\}}| |||¡S)Nr,z'Non-None charset not valid in UTF8 modeÚCHARSET)r\rr@r­rš)rVÚcharsetZcriteriarržrŸr>r>r?ÚsearchÙs z IMAP4.searchr¤FcCsvi|_||_|rd}nd}| ||¡\}}|dkr@d|_||fSd|_d|jvrb|sb| d|¡‚||j ddg¡fS) Nrr-rhrrú READ-ONLYz%s is not writableÚEXISTS)rJrLr­rGrCÚget)rVr®rCrržrŸr>r>r?Úselectës  ÿz IMAP4.selectcCs| d|||¡S)Nr.r»)rVr®rÄZwhatr>r>r?Úsetacl sz IMAP4.setaclcGs$|jdg|¢RŽ\}}| ||d¡S)Nr/rËr¹)rVr}ržrŸr>r>r?Ú setannotationszIMAP4.setannotationcCs | d||¡\}}| ||d¡S)Nr0rÎr¹)rVrÏZlimitsržrŸr>r>r?ÚsetquotaszIMAP4.setquotacGsHd}|d|dfdkr d|}|j|||g|¢RŽ\}}| |||¡S)Nr1rr™r¥r¨r¹)rVZ sort_criteriarëÚsearch_criteriarržrŸr>r>r?Úsort$s z IMAP4.sortcCs¦d}ts| d¡‚|jr"| d¡‚||jvr6| d¡‚|durFt ¡}| |¡\}}|dkrŽ|j|j |j d|_ |j   d¡|_ d|_|  ¡n | d ¡‚| |||¡S) Nr2zSSL support missingzTLS session already establishedzTLS not supported by serverrh©Zserver_hostnamer„TzCouldn't establish TLS session)ÚHAVE_SSLr@rNrBrpÚsslÚ_create_stdlib_contextr­Ú wrap_socketr…rWr†r‡rnrš)rVÚ ssl_contextrržrŸr>r>r?Ústarttls2s&    ÿ  zIMAP4.starttlscCs$d}| |||¡\}}| |||¡S)Nr3r¹)rVr®ÚnamesrržrŸr>r>r?ÚstatusIsz IMAP4.statuscCs>|d|dfdkrd|}| d|||¡\}}| ||d¡S)Nrr™r¥r¨r4rr¹)rVr¿Úcommandr¯ržrŸr>r>r?ÚstoreUsz IMAP4.storecCs | d|¡S)Nr5r»rÁr>r>r?Ú subscribe`szIMAP4.subscribecGs,d}|j|||g|¢RŽ\}}| |||¡S)Nr6r¹)rVZthreading_algorithmrërôrržrŸr>r>r?Úthreadhsz IMAP4.threadc Gsˆ| ¡}|tvr| d|¡‚|jt|vrL| d||jd t|¡f¡‚d}|j||g|¢RŽ\}}|dvrv|}nd}| |||¡S)NzUnknown IMAP4 UID command: %sú9command %s illegal in state %s, only allowed in states %sú, r7)r,r1r6r)r¡rsr@rGÚjoinr­rš)rVrÿr}rržrŸr>r>r?Úuidrs ÿþz IMAP4.uidcCs | d|¡S)Nr8r»rÁr>r>r?Ú unsubscribe‹szIMAP4.unsubscribecCs*z| d¡\}}Wd|_nd|_0||fS)Nr9rr½)rVržrr>r>r?Úunselect“s zIMAP4.unselectcGs.| ¡}|tvr|jft|<|j|g|¢RŽSry)r¡rsrGr­©rVrr}r>r>r?Úxatom£s  z IMAP4.xatomcCs8|dur d}|j}||vr*|| |¡n |g||<dS©NrA)rJr‹r²)rVržrŸZurr>r>r?Ú_append_untagged¹s zIMAP4._append_untaggedcCs,|j d¡}|r(| |d |jd¡¡‚dS)NÚBYEr™r³)rJrïrBr¶r])rVÚbyer>r>r?Ú _check_byeÇs zIMAP4._check_byec Gsî|jt|vr4d|_| d||jd t|¡f¡‚dD]}||jvr8|j|=q8d|jvrj|jsj| d¡‚| ¡}t ||j ƒ}|d|}|D]0}|durœqŽt |t ƒr²t ||j ƒ}|d|}qŽ|j}|dur d|_t |ƒt |jƒurî|}nd}|t dt|ƒ|j ƒ}z| |t¡Wn4tyP} z| d| ¡‚WYd} ~ n d} ~ 00|dur`|S| ¡r~|j|r`|Sq`|rŽ||jƒ}z| |¡| t¡Wn4tyÚ} z| d| ¡‚WYd} ~ n d} ~ 00|s`qêq`|S) Nrr©rhÚNOÚBADríz#mailbox status changed to READ-ONLYó z {%s}zsocket error: %s)rGrsrHr@rrJrLrCÚ_new_tagÚbytesr]rßràÚtypeÚ_commandr‹r•r¬rTrBrmrIrK) rVrr}ržÚtagrÚargrHZ literatorÚvalr>r>r?rÍs` ÿþ   ÿ       $     $zIMAP4._commandc CsÊ|dk}|s| ¡z|j||d\}}Wnn|jyb}z| d||f¡‚WYd}~n@d}~0|jy˜}z| d||f¡‚WYd}~n d}~00|s¦| ¡|dkrÂ| d|||f¡‚||fS)Nr)Ú expect_byezcommand: %s => %srz%s command error: %s %s)rÚ_get_tagged_responserBr@)rVrrr|ržrrr>r>r?Ú_command_completes&(zIMAP4._command_completecCsJ| ¡\}}|dgkr | d¡‚t|d|jƒ}| ¡}t| ¡ƒ|_dS)Nz"no CAPABILITY response from serverr™)rºr@ràr]r¡ÚtupleÚsplitrpr¾r>r>r?rn,s    zIMAP4._get_capabilitiescCs®| ¡}| |j|¡rp|j d¡}||jvr:| d|¡‚|j d¡}t||jƒ}|j d¡}||gf|j|<nöd}| t |¡sš| |j |¡rš|j d¡}|jdurÐ| t |¡rÂ|j d¡|_ dS| d|¡‚|j d¡}t||jƒ}|j d¡}|durd}|r|d|}| |j |¡rZt|j d ¡ƒ}| |¡}| |||f¡| ¡}q| ||¡|d vrª| t|¡rª|j d¡}t||jƒ}| ||j d¡¡|S) Nrzunexpected tagged response: %rrrZdata2zunexpected response: %rrArrŒr)Ú _get_lineÚ_matchrkÚmoÚgrouprIrBràr]ÚUntagged_responserdÚ ContinuationrKrbÚintrŠr Ú Response_code)rVÚresprržrŸZdat2rŒrr>r>r?rm5sD                 zIMAP4._get_responsec Csˆ|j|}|dur|j|=|S|rDd}|j |d¡}|durD||fS| ¡z | ¡Wq|jy€}z‚WYd}~qd}~00qdS)Nr )rIrJÚpoprrmrB)rVrrÚresultržrrr>r>r?r…s  zIMAP4._get_tagged_responsecCs>| ¡}|s| d¡‚| d¡s.| d|¡‚|dd…}|S)Nzsocket error: EOFr z#socket error: unterminated line: %réþÿÿÿ)rrBÚendswithr’r>r>r?r ¦s   zIMAP4._get_linecCs| |¡|_|jduSry)Úmatchr")rVZcreÚsr>r>r?r!¹s z IMAP4._matchcCs2|jtt|jƒ|jƒ}|jd|_d|j|<|S)Nr)rjrràrMr]rI)rVrr>r>r?rÅs  zIMAP4._new_tagcCs$| dd¡}| dd¡}d|dS)Nú\z\\ú"z\")r³)rVrr>r>r?r×Ís  z IMAP4._quotecGs| ||j|g|¢RŽ¡Sry)rrr r>r>r?r­ÕszIMAP4._simple_commandcCs8|dkr||fS||jvr$|dgfS|j |¡}||fS)Nr)rJr))rVržrŸrrr>r>r?ršÚs    zIMAP4._untagged_response)rÒrÓ)rÒrÓ)r¤F)N)F)Tr;r<r=rRr@rBrCÚ IMAP4_PORTrZrOrgrQrxrzr~rƒrPrŠrr•rSr‚r r£r²r¸rºr¼r–rÀrÂrÃrÅrÆrÇrÈrÊrÍrÐrÑrÖrÚrÜrÛr|rãrärår›rçrèrérìrðrñròrórõrürþrrrrrrr r rrrrnrmrr r!rr×r­ršÚ_mesgZ_dump_urZ_logZ print_logr>r>r>r?rŠs˜1*                      M P ! $rc@s:eZdZdeddddfdd„Zdd„Zdedfdd„ZdS) Ú IMAP4_SSLrDNcCs’|dur|durtdƒ‚|dur0|dur0tdƒ‚|dus@|durVddl}| dtd¡||_||_|durxtj||d}||_t   ||||¡dS)Nz8ssl_context and keyfile arguments are mutually exclusivez9ssl_context and certfile arguments are mutually exclusiverzEkeyfile and certfile are deprecated, use a custom ssl_context insteadé)ÚcertfileÚkeyfile) rÚwarningsÚwarnÚDeprecationWarningr6r5rørùrûrrZ)rVrWrXr6r5rûrYr7r>r>r?rZ#s"ÿÿzIMAP4_SSL.__init__cCst ||¡}|jj||jdS)Nrö)rrƒrûrúrW)rVrYr…r>r>r?rƒ7s ÿzIMAP4_SSL._create_socketcCst ||||¡dSry)rrPrUr>r>r?rP<szIMAP4_SSL.open)r;r<r=ÚIMAP4_SSL_PORTrZrƒrPr>r>r>r?r3s ÿ r3c@s>eZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „ZdS)rcCs||_t |¡dSry)rÿrrZ)rVrÿr>r>r?rZSszIMAP4_stream.__init__NcCsNd|_d|_d|_d|_tj|jttjtjddd|_ |j j |_ |j j |_ dS)NT)ÚbufsizeÚstdinÚstdoutÚshellZ close_fds)rWrXr…r‡Ú subprocessÚPopenrÿrÚPIPErµr<Ú writefiler=ÚreadfilerUr>r>r?rPXsý zIMAP4_stream.opencCs |j |¡Sry)rCrŠ)rVrŒr>r>r?rŠhszIMAP4_stream.readcCs |j ¡Sry)rCrrer>r>r?rmszIMAP4_stream.readlinecCs|j |¡|j ¡dSry)rBÚwriteÚflushr”r>r>r?r•rs zIMAP4_stream.sendcCs"|j ¡|j ¡|j ¡dSry)rCr–rBrµÚwaitrer>r>r?rSxs  zIMAP4_stream.shutdown)NNN) r;r<r=rZrPrŠrr•rSr>r>r>r?rGs   rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) r´cCs ||_dSry)r·)rVZmechinstr>r>r?rZ†sz_Authenticator.__init__cCs&| | |¡¡}|durdS| |¡S)Nó*)r·r¶rá)rVrZretr>r>r?rµ‰sz_Authenticator.processcCsnd}t|tƒr| d¡}|rjt|ƒdkrB|dd…}|dd…}n|}d}t |¡}|r||dd…}q|S)NrArfé0r™)rßràrár‹ÚbinasciiZ b2a_base64)rVÚinpZoupÚtÚer>r>r?rás      z_Authenticator.encodecCs|sdSt |¡Sr )rIZ a2b_base64)rVrJr>r>r?r¶§sz_Authenticator.decodeN)r;r<r=rZrµrár¶r>r>r>r?r´€sr´z0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov DecrÝcCsi|]\}}| ¡|d“qS)r)rá)Ú.0Únr.r>r>r?Ú ­rArOrc CsØt |¡}|sdSt| d¡}| d¡}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ} t| d ¡ƒ} | d | d } |d krª| } ||||||d d d f } t | ¡| } t | ¡S) NÚmonÚzonenÚdayÚyearÚhourrˆÚsecÚzonehÚzonemé<ó-r™) Ú InternalDater-ÚMon2numr#r&ÚcalendarZtimegmÚtimeÚ localtime)r(r"rPrQrRrSrTrˆrUrVrWZzoneZttÚutcr>r>r?r¯s$  rcCs@d}d}tt|ƒƒ}|rr>r?r Òs  r cCs$t |¡}|sdSt| d¡ ¡ƒS)Nr>r¯)ÚFlagsr-rr#r)r(r"r>r>r?r ßs r cCst|ttfƒr"t |tj¡ ¡}nàt|tƒr¶z |j }WnXt yŽt j r‚|d}|dkrnt   t  |¡¡d}t jt jf| }nt j }Yn0t|d}t|dd…dt|ƒiŽ}nLt|tƒrØ|jdurÒtdƒ‚|}n*t|tƒrú|d|dfdkrú|Std ƒ‚d  t|j¡}| |¡S) Nér™)ZsecondséÚtzinfozdate_time must be awarer)r0r0zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")rßr&ÚfloatrZ fromtimestamprr_Z astimezonerÚ tm_gmtoffrvr]Údaylightr^ÚmktimeÚaltzonerrgrràÚformatÚMonthsZmonthÚstrftime)r°ZdtZgmtoffZdstrŽZfmtr>r>r?r ês2 ÿ       r Ú__main__zd:s:)r>r>z-dz-s)rDzIMAP password for %s on %s: Z localhostzJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)sÚ )rØZlfrÚ)rÂ)ú /tmp/xxx 1)ré)rrz/tmp/yyy)r©ú /tmp/yyz 2r²rt)rÖ)z/tmpzyy*)rðrs)rì)NZSUBJECTÚtest)rÈ)Ú1z(FLAGS INTERNALDATE RFC822))r)rvÚFLAGSz (\Deleted))rår>)rÇr>)r r>)r–r>)rðr>)r£)Z UIDVALIDITY)r)r,ZALL)r£)rî)r|r>cCsLt d||f¡tt|ƒ|Ž\}}t d|||f¡|dkrH|d‚|S)Nz%s %sz %s => %s %srr)ÚMr2rt)Úcmdr}ržrŸr>r>r?ÚrunKs rzrzPROTOCOL_VERSION = %szCAPABILITIES = %rrÖ)z/tmp/zyy%z .*"([^"]+)"$r™rÃrrz%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 )UrlrIr—rir^r‚r?r€r]r\rrrÚiorrør÷Ú ImportErrorÚ__all__r¬rEr1r:ror‘r‰rsr_r%rdrZrarbrªr'r$rdr`rcrr3r²rr´rrnÚ enumerater[rr r r r;ZgetoptZgetpassÚargvZoptlistr}r@rZstream_commandÚoptr&rWZgetuserZUSERZPASSWDZ test_mesgZ test_seq1Z test_seq2rzrxrGr2rqrpryZmlr-r"r#ÚpathrŸrÚprintr>r>r>r?ÚsLH    Õ0     ÿ 6 9, #  )       òù           ÿ  ý