grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026ó ÑúO1r%õ­ãóÊ•SrSSKrSSKrSSKrSSKrSSKrSrSS/r"SS\ 5r Sr S r S r S r\ \-rS r"S S5r\(a"SS\5r\R'S5 \S:Xaê\"\R*S5r\"\R155 \R3\R*S5 \R5\R*S5 \R75 \R95urr\"S\S-5H?r \RC\ 5ur"r#r$\"S\ -5 \#Hr%\"S\%-5 M \"S5 MA \RM5 gg!\a SrGNGf=f)z@A POP3 client class. Based on the J. Myers POP3 draft, Jan. 96 éNTFÚPOP3Ú error_protocó•\rSrSrSrg)ré©N)Ú__name__Ú __module__Ú __qualname__Ú__firstlineno__Ú__static_attributes__róÚ-/opt/alt/python313/lib64/python3.13/poplib.pyrrs†šdr éniãó ó icó•\rSrSrSrSr\\R4Sjr Sr Sr Sr Sr S rS rS rS rS rSrSrSrSrS#SjrSrSrSrSrSrSrSr\R@"S5r!Sr"Sr#S#Sjr$Sr%S r&S#S!jr'S"r(g)$ré3aÈThis class supports both the minimal and optional command sets. Arguments can be strings or integers (where appropriate) (e.g.: retr(1) and retr('1') both work equally well. Minimal Command Set: USER name user(name) PASS string pass_(string) STAT stat() LIST [msg] list(msg = None) RETR msg retr(msg) DELE msg dele(msg) NOOP noop() RSET rset() QUIT quit() Optional Commands (some servers support these): RPOP name rpop(name) APOP name digest apop(name, digest) TOP msg n top(msg, n) UIDL [msg] uidl(msg = None) CAPA capa() STLS stls() UTF8 utf8() Raises one exception: 'error_proto'. Instantiate with: POP3(hostname, port=110) NB: the POP protocol locks the mailbox from user authorization until QUIT, so be sure to get in, suck the messages, and quit, each time you access the mailbox. POP is a line-based protocol, which means large mail messages consume lots of python cycles reading them line-by-line. If it's available on your mail server, use IMAP4 instead, it doesn't suffer from the two problems above. zUTF-8cóþ•XlX lSUl[R"SXU5 UR U5UlUR RS5UlSUl UR5Ul g)NFzpoplib.connectÚrbr) ÚhostÚportÚ_tls_establishedÚsysÚauditÚ_create_socketÚsockÚmakefileÚfileÚ _debuggingÚ_getrespÚwelcome)ÚselfrrÚtimeouts rÚ__init__Ú POP3.__init__bsa€àŒ ØŒ Ø %ˆÔÜ � Š Ð" D°Ô5Ø×'Ñ'¨Ó0ˆŒ Ø—I‘I×&Ñ& tÓ,ˆŒ ؈ŒØ—}‘}“ˆ� r có†•UbU(d [S5e[R"URUR4U5$)Nz0Non-blocking socket (timeout=0) is not supported)Ú ValueErrorÚsocketÚcreate_connectionrr)r"r#s rrÚPOP3._create_socketms6€Ø Ñ ¦wÜÐOÓPÐ PÜ×'Ò'¨¯©°D·I±IÐ(>ÀÓHÐHr cóÀ•URS:”a[S[U55 [R"SX5 UR R U[-5 g)Néz*put*zpoplib.putline)rÚprintÚreprrrrÚsendallÚCRLF©r"Úlines rÚ_putlineÚ POP3._putliners@€Ø �?‰?˜QÓ ¤ g¬t°D«zÔ :Ü � Š Ð" DÔ/Ø � ‰ ×ј$¤™+Õ&r cóœ•UR(a[S[U55 [XR5nUR U5 g)Nz*cmd*)rr-r.ÚbytesÚencodingr3r1s rÚ_putcmdÚ POP3._putcmdzs0€Ø �?�?œE '¬4°«:Ô6Ü�TŸ=™=Ó)ˆØ � ‰ �dÕr cód•URR[S-5n[U5[:”a [ S5eUR S:”a[ S[U55 U(d [ S5e[U5nUSS[:XaUSSU4$USS[:XaUSSU4$USSU4$)Nr,z line too longz*get*z-ERR EOFéþÿÿÿéÿÿÿÿ) rÚreadlineÚ_MAXLINEÚlenrrr-r.r0ÚCR)r"r2Úoctetss rÚ_getlineÚ POP3._getline„s°€Ø�y‰y×!Ñ!¤(¨Q¡,Ó/ˆÜ ˆt‹9”xÓ Ü˜oÓ.Ð .à �?‰?˜QÓ ¤ g¬t°D«zÔ :Þœ; zÓ2Ð2Ü�T“ˆð ��ˆ9œÓ ؘ˜�9˜fÐ$Ð $Ø ��ˆ8”r‹>ؘ˜"�:˜vÐ%Ð %Ø�C�Rˆy˜&Ð Ð r có¶•UR5upURS:”a[S[U55 UR S5(d [ U5eU$)Nr,z*resp*ó+)rBrr-r.Ú startswithr)r"ÚrespÚos rr Ú POP3._getresp™sG€Ø—-‘-“/‰ˆØ �?‰?˜QÓ ¤ h´°T³ Ô ;Ø�‰˜t×$Ñ$ܘdÓ#Ð #؈ r có•UR5n/nSnUR5upEUS:waOURS5(a US- nUSSnX5-nURU5 UR5upEUS:waMOXU4$)Nró.s..r,)r rBrFÚappend)r"rGÚlistrAr2rHs rÚ _getlongrespÚPOP3._getlongresp£sƒ€Ø�}‰}‹ˆØˆ˜A�6Ø—-‘-“/‰ˆØ�d‹lØ�‰˜u×%Ñ%Ø�a‘C�ؘA˜B�x�Ø‘ZˆFØ �K‰K˜Ô Ø—m‘m“o‰GˆDð �d�lð˜6Ð!Ð!r cóD•URU5 UR5$©N)r8r r1s rÚ _shortcmdÚPOP3._shortcmd³s€Ø � ‰ �TÔØ�}‰}‹Ðr cóD•URU5 UR5$rQ)r8rNr1s rÚ_longcmdÚ POP3._longcmdºs€Ø � ‰ �TÔØ× Ñ Ó"Ð"r có•UR$rQ)r!©r"s rÚ getwelcomeÚPOP3.getwelcomeÁs €Ø�|‰|Ðr có•XlgrQ)r)r"Úlevels rÚset_debuglevelÚPOP3.set_debuglevelÅs€Ø�r có*•URSU-5$)zFSend user name, return response (should indicate password required). zUSER %s©rR©r"Úusers rrbÚ POP3.userËs€ð �~‰~˜i¨$Ñ.Ó/Ð/r có*•URSU-5$)zˆSend password, return response (response includes message count, mailbox size). NB: mailbox is locked by server from here to 'quit()' zPASS %sr`)r"Úpswds rÚpass_Ú POP3.pass_Ós€ð�~‰~˜i¨$Ñ.Ó/Ð/r có6•URS5nUR5nUR(a[S[ U55 [ U5S:a [ S5e[US5n[US5nX44$![a [ S5ef=f)zMGet mailbox status. Result is tuple of 2 ints (message count, mailbox size) ÚSTATz*stat*ézInvalid STAT response formatr,éz.Invalid STAT response data: non-numeric values) rRÚsplitrr-r.r?rÚintr')r"ÚretvalÚretsÚ numMessagesÚ sizeMessagess rÚstatÚ POP3.statÝs”€ð —‘ Ó'ˆØ�|‰|‹~ˆØ �?�?œE (¬D°«JÔ7ô ˆt‹9�q‹=ÜÐ<Ó=Ð =ð Pܘd 1™g›,ˆKܘt A™w›<ˆLðÐ*Ð*øôó PÜÐNÓOÐ Oð Pús Á#BÂBNcóR•UbURSU-5$URS5$)zðRequest listing, return result. Result without a message number argument is in form ['response', ['mesg_num octets', ...], octets]. Result when a message number argument is given is a single response: the "scan listing" for that message. zLIST %sÚLIST©rRrU©r"Úwhichs rrMÚ POP3.listõs-€ð Ñ Ø—>‘> )¨eÑ"3Ó4Ð 4Ø�}‰}˜VÓ$Ð$r có*•URSU-5$)z_Retrieve whole message number 'which'. Result is in form ['response', ['line', ...], octets]. zRETR %s©rUrws rÚretrÚ POP3.retrs€ð �}‰}˜Y¨Ñ.Ó/Ð/r có*•URSU-5$)z6Delete message number 'which'. Result is 'response'. zDELE %sr`rws rÚdeleÚ POP3.dele s€ð �~‰~˜i¨%Ñ/Ó0Ð0r có$•URS5$)zHDoes nothing. One supposes the response indicates the server is alive. ÚNOOPr`rXs rÚnoopÚ POP3.noops€ð �~‰~˜fÓ%Ð%r có$•URS5$)z(Unmark all messages marked for deletion.ÚRSETr`rXs rÚrsetÚ POP3.rsets€à�~‰~˜fÓ%Ð%r cóH•URS5nUR5 U$)zDSignoff: commit changes on server, unlock mailbox, close connection.ÚQUIT)rRÚclose)r"rGs rÚquitÚ POP3.quit s€à�~‰~˜fÓ%ˆØ � ‰ Œ ؈ r cóê•URnSUlUbUR5 URnSUlUb1UR[R 5 UR5 gg![ a:nUR[R:wa[USS5S:waeSnANQSnAff=f!UR5 f=f!URnSUlUbŽUR[R 5 OG![ a:nUR[R:wa[USS5S:waeSnAOSnAff=fUR5 f!UR5 f=ff=f)z8Close the connection without assuming anything about it.NÚwinerrorri&') rr‹rÚshutdownr(Ú SHUT_RDWRÚOSErrorÚerrnoÚENOTCONNÚgetattr)r"rrÚexcs rr‹Ú POP3.close&s)€ð !Ø—9‘9ˆD؈DŒIØÑØ— ‘ ” à—9‘9ˆD؈DŒIØÑð !Ø—M‘M¤&×"2Ñ"2Ô3ð—J‘J•Lð øôó🠙 ¤U§^¡^Ó3Ü" 3¨ °AÓ6¸%Ó?Øÿøð ûð—J‘J•Lûð—9‘9ˆD؈DŒIØÑð !Ø—M‘M¤&×"2Ñ"2Õ3øÜó🠙 ¤U§^¡^Ó3Ü" 3¨ °AÓ6¸%Ó?Øÿøð úð—J‘J•Lø�D—J‘J•Lúð úsp‚&C ¿A0Á0 B4Á:0B/Â*B7Â/B4Â4B7Â7C à E2Ã$DÄEÄ EÄ0EÄ>EÅEÅEÅ E2ÅE.Å.E2có*•URSU-5$)z?Send RPOP command to access the mailbox with an alternate user.zRPOP %sr`ras rÚrpopÚ POP3.rpopBs€à�~‰~˜i¨$Ñ.Ó/Ð/r s\+OK.[^<]*(<.*>)có:•[X R5nURRUR5nU(d [ S5eSSKnURS5U-nURU5R5nURSU<SU<35$)zÛAuthorisation - only possible if server has supplied a timestamp in initial greeting. Args: user - mailbox user; password - mailbox password. NB: mailbox is locked by server from here to 'quit()' z!-ERR APOP not supported by serverrNr,zAPOP Ú ) r6r7Ú timestampÚmatchr!rÚhashlibÚgroupÚmd5Ú hexdigestrR)r"rbÚpasswordÚsecretÚmrŸÚdigests rÚapopÚ POP3.apopIsy€ô�x§¡Ó/ˆØ �N‰N× Ñ  §¡Ó .ˆÞÜÐAÓBÐ BÛØ—‘˜“˜FÑ"ˆØ—‘˜VÓ$×.Ñ.Ó0ˆØ�~Š~«d²FÐ;Ó<Б> )¨eÑ"3Ó4Ð 4Ø�}‰}˜VÓ$Ð$r có$•URS5$)zITry to enter UTF-8 mode (see RFC 6856). Returns server response. ÚUTF8r`rXs rÚutf8Ú POP3.utf8ss€ð�~‰~˜fÓ%Ð%r cóž•Sn0nURS5nUSnUHnU"U5upgXrU'M U$![a [S5ef=f)a°Return server capabilities (RFC 2449) as a dictionary >>> c=poplib.POP3('localhost') >>> c.capa() {'IMPLEMENTATION': ['Cyrus', 'POP3', 'server', 'v2.2.12'], 'TOP': [], 'LOGIN-DELAY': ['0'], 'AUTH-RESP-CODE': [], 'EXPIRE': ['NEVER'], 'USER': [], 'STLS': [], 'PIPELINING': [], 'UIDL': [], 'RESP-CODES': []} >>> Really, according to RFC 2449, the cyrus folks should avoid having the implementation split into multiple arguments... cóT•URS5R5nUSUSS4$)NÚasciirr,)Údecoderl)r2Úlsts rÚ _parsecapÚPOP3.capa.._parsecap†s-€Ø—+‘+˜gÓ&×,Ñ,Ó.ˆCØ�q‘6˜3˜q˜r˜7�?Ð "r ÚCAPAr,z!-ERR CAPA not supported by server)rUr)r"rºÚcapsrGÚrawcapsÚcaplineÚcapnmÚcapargss rÚcapaÚ POP3.capaysn€ò #ðˆð CØ—=‘= Ó(ˆDؘ1‘gˆGÛ"�Ù!*¨7Ó!3‘�Ø%�U“ ñ#ð ˆ øôó CÜÐAÓBÐ Bð Cús ‡-6¶A cóž•[(d [S5eUR(a [S5eUR5nSU;a [S5eUc[R "5nUR S5nURURURS9UlURRS5Ul SUlU$)zcStart a TLS session on the active connection as specified in RFC 2595. context - a ssl.SSLContext z-ERR TLS support missingú$-ERR TLS session already establishedÚSTLSz!-ERR STLS not supported by server©Úserver_hostnamerT) ÚHAVE_SSLrrrÂÚsslÚ_create_stdlib_contextrRÚ wrap_socketrrrr)r"Úcontextr½rGs rÚstlsÚ POP3.stls–s±€÷ ŠxÜÐ8Ó9Ð 9Ø × × ÜÐDÓEÐ EØ�y‰y‹{ˆØ˜‹~ÜÐAÓBÐ BØ ‰?Ü×0Ò0Ó2ˆGØ�~‰~˜fÓ%ˆØ×'Ñ'¨¯ © Ø8<¿ ¹ ð(ðCˆŒ à—I‘I×&Ñ& tÓ,ˆŒ Ø $ˆÔ؈ r )rrrrrrr!rQ))rr r r Ú__doc__r7Ú POP3_PORTr(Ú_GLOBAL_DEFAULT_TIMEOUTr$rr3r8rBr rNrRrUrYr]rbrfrrrMr|rrƒr‡rŒr‹r™ÚreÚcompiler�r§r«r¯r³rÂrÎr rr rrr3s¹†ñ)ðV€Hà"+Ø×7Ñ7ô 'òIò 'òò!ò*ò "ò ò#òò ò 0ò0ò+ô0 %ò0ò1ò&ò&ò ò !ò80ð — ’ Ð/Ó0€Iò=ò*=ô %ò&ò ÷:r cóR•\rSrSrSr\4\RSS.SjjrSr S Sjr Sr g) ÚPOP3_SSLi®aPOP3 client class over SSL connection Instantiate with: POP3_SSL(hostname, port=995, context=None) hostname - the hostname of the pop3 over ssl server port - port number context - a ssl.SSLContext See the methods of the parent class POP3 for more documentation. N)r#rÍcól•Uc[R"5nX@l[R XX#5 grQ)rÊrËrÍrr$)r"rrr#rÍs rr$ÚPOP3_SSL.__init__ºs(€à‰Ü×4Ò4Ó6�Ø"ŒLÜ �M‰M˜$ dÕ 4r cóx•[RX5nURRUURS9nU$)NrÇ)rrrÍrÌr)r"r#rs rrÚPOP3_SSL._create_socketÁs:€Ü×&Ñ& tÓ5ˆDØ—<‘<×+Ñ+¨DØ<@¿I¹Ið,ðGˆDàˆKr có•[S5e)zˆThe method unconditionally raises an exception since the STLS command doesn't make any sense on an already established SSL/TLS session. rÅ)r)r"rÍs rrÎÚ POP3_SSL.stlsÇs€ô ÐDÓEÐ Er )rÍrQ) rr r r rÐÚ POP3_SSL_PORTr(rÒr$rrÎr rr rrÖrÖ®s,†ñ ð'4ð 5Ø &× >Ñ >Èö 5ò ÷  Fr rÖÚ__main__r,rkrjz Message %d:z z-----------------------)'rÐr“rÓr(rrÊrÉÚ ImportErrorÚ__all__Ú ExceptionrrÑrÝr@ÚLFr0r>rrÖrLrÚargvÚar-rYrbrfrMrrÚnumMsgsÚ totalSizeÚrangeÚir|ÚheaderÚmsgrAr2rŒrr rÚrësyðñó Û Û Û ðÛØ€Hð �-Ð €ô#�)Ô"ð € ð€ ð €Ø €Ø ˆ"�u€ð €÷vñvör  ôF�4ôFð@ ‡N�N�:Ôà ˆzÓÙ ˆS�X‰X�a‰[Ó€AÙ ˆ!�,‰,‹.ÔØ‡F�Fˆ3�8‰8�A‰;ÔØ‡G�GˆC�H‰H�Q‰KÔØ‡F�F„HØŸ6™6›8Ñ€WˆiÙ �1�g ‘kÖ "ˆØ !§¡ q£ ш��fÙ ˆm˜aÑÔ ÛˆDÙ �%˜$‘,Ö ñá Ð'Ö(ñ #ð ‡F�F…Hðøðq ó؃Hðús”EÅE"Å!E"